- 博客(6)
- 收藏
- 关注
原创 图解清晰易懂——两两交换链表中的节点_100%
两两交换链表中的节点,题中要求不可以只进行值的交换,要真正的改变链表中的节点 tips 节点两两交换操作与206.反转链表相同 就是先反转两个节点,再与之后被反转的两个节点连接在一起 如果是奇数个节点,那么就把最后一个节点连接上 代码剖析 展示自定义节点的具体作用 ListNode curr=null; ListNode prev=head; ListNode temp=null; ListNode linkNode=null;
2021-08-09 10:42:49 277
原创 59. 螺旋矩阵 II__模拟法,形象生动代码解读包教包会
59. 螺旋矩阵 II 模拟法就是模拟数字填写的轨道,像一辆火车慢慢的行驶在设定的螺旋轨道上面 left、right、top、bottom就是起到约束作用的轨道 过程: 一 for (int i = left; i <=right ; i++) result[top][i]=num++; top++; 这一段是从left到right的轨道 从left向right方向行驶 (沿top=0这行轨道) 行驶到边界的时候停车 top方向向下移动一行 二
2021-08-08 13:13:35 123
原创 209. 长度最小的子数组
209. 长度最小的子数组 滑动窗口就是一个动态变化的区间 如果窗口区域内元素之和 <target 就扩大窗口,反之就缩小窗口 其实还是类似于双指针的应用,只不过双指针被隐式调用 class Solution { public int minSubArrayLen(int target, int[] nums) { int result=Integer.MAX_VALUE; int start=0; int windowsLength=0; i
2021-08-08 10:32:50 90
原创 977. 有序数组的平方
977. 有序数组的平方 首先想到的肯定还是暴力解法平方再排个序,但如果这样写就没有写的必要了 双指针 一个left指针,一个right指针,哪一个指针所在index的绝对值较大就将该元素的平方添加到result数组的末尾,for循环完毕则运算结束。 class Solution { public int[] sortedSquares(int[] nums) { int length=nums.length; int[] result=new int[length
2021-08-08 09:24:53 118
原创 27. 移除元素_解题思路与注意事项_代码分析
27. 移除元素 移除元素 移除元素并不是真正的移除,而是将未被元素调换到数组的前部 较快的解决办法:就是遍历整个数组 如果数组中的元素满足**!=val的条件,那么就把这个元素“挪动”到数组的前部,遍历结束的时候,整个数组也就完成了元素的前部置换,也就满足了题目的要求,index的大小自然随着挪动次数的自增就是移除val值元素之后的数组元素个数** 该解法的不足之处 挪动元素的操作执行了nums.length次,在起始元素不为val时,显然其中很多次挪动操作可能是无意义的,执行的很可能是nums[i]=n
2021-08-08 08:44:40 121
原创 704_二分查找_解题思路与注意事项
704. 二分查找 二分查找的注意点: 选择合适的查找区间:首先应该选择好每一次进行查找的的区间 如果while循环中定义的条件是left<=right,那么代表所选择的区间是 [left,right],也就是说当left==right的时候区间中还是存在有效值的。 确定区间的变化规律:left与right如何进行变化 根据选择的left<=right查找区间,可知如果target元素存在,那么target元素一定存在于**[0,mid)||(mid,end]区间中,也就是mid位置没有可能存在
2021-08-08 06:56:41 118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人