数据结构
xiyuanda
这个作者很懒,什么都没留下…
展开
-
JAVA递归生成树形菜单
首先,编写数据模型Menu。每条菜单有自己的id、父节点parentId、菜单名称text、菜单还拥有次级菜单children。 public class Menu { private String id; private String parentId; private String text; private List<Menu> children; public Menu(String id,String parentId原创 2021-12-03 21:22:52 · 174 阅读 · 0 评论 -
删除有序数组中的重复项
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 思路:先定义一个变量初始值是数组的长度;遍历数组,由于会出现i+1的下表 所以i<length-1 当判定当前数和下一个数相等时,将数组左移覆盖当前值,但是同时因为数组的最后两位一定会相等(因为你是覆盖过来数值 倒数俩数一样)所以让length-1,不对数组的最后的数进行判断。 为了防原创 2021-11-30 12:06:36 · 556 阅读 · 0 评论 -
合并两个递增的有序数组
利用双指针的方法,每次将两个数组中的较小的数放入新数组,两个数组遍历一遍即可 int[] arr = new int[nums1.length]; int i = 0; int j = 0; while (i<m || j<n){ if (i == m){ arr[i+j] = nums2[j]; j++; }else if (原创 2021-11-30 11:19:43 · 549 阅读 · 0 评论 -
算法:有效的括号
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。 有效字符串需满足: 1、左括号必须用相同类型的右括号闭合。 2、左括号必须以正确的顺序闭合。 //先判断如果是长度为单数的字符串,直接返回false int n = s.length(); if (n % 2 == 1) { return fals...原创 2021-11-29 20:56:05 · 147 阅读 · 0 评论 -
java中HashMap的containsKey方法
Map<String, String> map = new HashMap<Character, Character>() {{ put("key", "123"); }}; // 判断map中是否有key if(map.containKey(key)){ return true; } map中的containsKey(Key)方法是判断在map中是否有该key存在。 ...原创 2021-11-29 20:37:13 · 618 阅读 · 0 评论 -
数组的最大子序和
给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 解析:首先先定义一个最大和为max,初始值为nums[0];然后对数组进行遍历,如果当前值nums[i]和下一个值nums[i+1]的和大于nums[i+1],那么将两数之和赋给nums[i+1];遍历完成之后,整个数组中最大的值就是所求;(如过遇见负数相加后比负数大,但是和值会减小,所以整个数组中最大值实际上是不变的) public int maxSubArray(int[] nums) { ..原创 2021-11-29 20:24:06 · 114 阅读 · 0 评论 -
给定一个整数数组,判断是否存在重复元素
用哈希表解决: 将数组中的数据一个个插入哈希表,如果哈希表中已经存在这个数据,返回true,否则返回false public boolean containsDuplicate(int[] nums) { Set<Integer> set = new HashSet<>(); for (int x : nums){ if (!set.add(x)){ return true;原创 2021-11-29 19:38:36 · 623 阅读 · 0 评论