摘要:
背景:topic中如果数据格式有问题,消费时采用消费后自动提交offset的方式,会出现消费端程序一直无法消费而一直报错的情况。 解决办法:将该topic的数据保留时间设置小一点,如10s。 kafka是采用轮训的方式,轮训到这个topic发现10秒前的数据都是删掉。时间由server.proper 阅读全文
摘要:
剪枝操作可以去除重复无意义的操作,从而提升时间复杂度和空间复杂度 剪枝的常见思路: 排序和去重,这里常见Arrays.sort(nums) HashSet<>() 提前结束循环或者跳出循环 以力扣上的2344题为例: https://leetcode.cn/problems/minimum-dele 阅读全文
摘要:
掌握顺序数组的去重,对后续算法的去重剪枝,降低时间复杂度很有用,其基本思路如下: 1.双指针,k和i。其中k指向不重复的位置,i为数组的遍历指针 2.对数组进行遍历,其中i可以从1开始,k从0开始 3.比较nums[k]和nums[i]: 如果两者相同,移动i,k不变 如果两者不同,移动k,nums 阅读全文
摘要:
给一个字符串数组,如:String[] nums={"102","473","251","814"}; 请进行基数排序,返回 List<List> list, 其中List的index为基数位数,从0开始表示个位。index对应的list内容为截取的该位数的nums(如十位,则nums为 02,73 阅读全文
摘要:
刷题过程中会遇到List<List>的数据结构,以下展示定义和操作的过程 @Test public void ListTest(){ List<List<Integer>> res = new ArrayList<>(); System.out.println(res); // [] //添加第一个 阅读全文
摘要:
数组插入-从后往前的思想 合并数组的思想体现了数据结构中关于插入的问题,学习数据结构的时候,我们知道: 数组插入,时间复杂度为o(n),需要移动后面的所有元素,而链表则不用 如果遇到了数组插入的题目,我们不妨使用从后往前的寻找对应元素的位置,而避免元素的移动 力扣中经典的合并数组: 给你两个按 非递 阅读全文
摘要:
HashMap 由于使用key:value形式,可以实现快速查找。通常能将时间复杂度降维 //2.进阶:你可以想出一个时间复杂度小于 O(n2) 的算法吗?使用哈希表 public int[] twoSum2(int[] nums, int target) { Map<Integer, Intege 阅读全文
摘要:
解题时,如果不满足返回空数组,可以使用new int[0]返回 @Test public void intTest(){ int[] ints = new int[0]; //指定元素个数为0,表示空数组 int[] ints1 = new int[]{1, 2}; System.out.print 阅读全文
摘要:
很多高级用法,比如Stream ,Compare都只针对包装类 直接int[] 到set只能使用赋值的方法 int[] nums = {0,0,1,1,1,2,2,3,3,4}; Set<Integer> set = new HashSet<>(); for (int i = 0; i < nums 阅读全文
摘要:
一般set用于去重的判断,类似的还有HashMap 以下是常见的解题思路: 新建set new HashSet<Integer>() 对要判断的数组进行遍历,如果添加失败if (!set.add(x)),说明已存在该元素,提前进行结果的返回 遍历完成后返回一个默认值 Set<Integer> set 阅读全文