leetcode刷题心得
当得卷中卷,方为人上人
这个作者很懒,什么都没留下…
展开
-
java按照绝对值大小排序
nums = IntStream.of(nums) .boxed() .sorted((o1, o2) -> Math.abs(o2) - Math.abs(o1)) .mapToInt(Integer::intValue).toArray();上面那种方法, [[-2147483646,-2147483645],[2147483646,2147483647]] 排这种的时候会溢出所以最好比较大小,不要用减法!!!!!!!! Arrays.sort(p原创 2022-04-29 20:21:52 · 2703 阅读 · 0 评论 -
java按照绝对值大小排序
nums = IntStream.of(nums).boxed().sorted((o1, o2) -> Math.abs(o2) - Math.abs(o1)).mapToInt(Integer::intValue).toArray();原创 2022-04-27 20:12:01 · 1278 阅读 · 0 评论 -
做力扣题时,对函数传参的进一步理解
首先明白一点:java中基本类型是值传递,其他类型是引用传递首先是树节点的定义/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int原创 2022-04-09 16:06:01 · 804 阅读 · 0 评论 -
java List作为参数传递 以及List传值引用问题 list类型添加同一个list值会一起改变问题
在多次添加同一个list对象到另一个list里的时候List<List<Integer>> listtwo = new LinkedList<>(); List<Integer> list = new LinkedList<>(); list.add(1); list.add(2); list.add(3); list.add(4); list.add原创 2022-04-08 20:40:11 · 6201 阅读 · 0 评论 -
写递归算法的三要素
这里帮助大家确定下来递归算法的三个要素。每次写递归,都按照这三要素来写,可以保证大家写出正确的递归算法!确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。确定单层递归的逻辑: 确定每一层原创 2022-04-03 13:33:17 · 279 阅读 · 0 评论 -
单调队列与单调栈
单调队列,顾名思义,是一种具有单调性的队列。众所周知,单调性有单调递增和单调递减两种,相应的单调队列也分为单调递增队列和单调递减队列两种。单调递增队列:保证队列头元素一定是当前队列的最小值,用于维护区间的最小值。单调递减队列:保证队列头元素一定是当前队列的最大值,用于维护区间的最大值作用:需要得到当前的某个范围内的最小值或最大值** 实现流程:**实现单调队列,主要分为三个部分:去尾操作 :当队列有新元素待入队,需要从队尾开始,删除影响队列单调性的元素,维护队列的单调性。(删除一个队尾元素后,就原创 2022-04-02 17:26:18 · 70 阅读 · 0 评论 -
letcode刷题心得 二分法 螺旋矩阵 哈希表
一.在二分法和螺旋矩阵要注意定好区间letcode 704题二分法前提:不重复的元素,升序或降序序列因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的,这些都是使用二分法的前提条件,当大家看到题目描述满足如上条件的时候,可要想一想是不是可以用二分法了。二分查找涉及的很多的边界条件,逻辑比较简单,但就是写不好。例如到底是 while(left < right) 还是 while(left <= right),到底是right = middle呢,还是要right = midd原创 2022-03-25 20:37:00 · 90 阅读 · 0 评论 -
java实现螺旋矩阵 letcode代码笔记
要如何画出这个螺旋排列的正方形矩阵呢?要写出正确的螺旋矩阵一定要坚持循环不变量原则。要在螺旋矩阵的过程中,保持不变量,就是在while寻找中每一次边界的处理都要坚持根据区间的定义来操作,这就是循环不变量规则。而求解本题依然是要坚持循环不变量原则。模拟顺时针画矩阵的过程:填充上行从左到右填充右列从上到下填充下行从右到左填充左列从下到上由外向内一圈一圈这么画下去。可以发现这里的边界条件非常多,在一个循环中,如此多的边界条件,如果不按照固定规则来遍历,那就是一进循环深似海,从此offer是路人原创 2022-03-21 16:50:56 · 371 阅读 · 0 评论 -
c和java为什么使用low + (high - low) / 2而不使用(high + low) / 2呢
为了防止溢出代码如下int a=2147483647,b=1;//a为int型允许的最大数值 System.out.println((a+b)/2);//-1073741774溢出 System.out.println((a-b)/2+b);//1073741873正常原创 2022-03-17 16:00:53 · 102 阅读 · 0 评论 -
二分查找 java实现以及注意事项 力扣letcode二分查找题目汇总
public static int search(int[] nums, int target) { int min=0,max=nums.length-1,mid; while(min<=max) {//-1,0,3,5,9,12 mid=(min+max)/2; System.out.println(min+"--"+max); if (target==nums[mid])原创 2022-03-16 15:18:36 · 6297 阅读 · 0 评论