代码随想录算法训练营第二天

81 阅读1分钟

977. 有序数组的平方

双指针法

数组从小到大排列,有负数,数组平方的最大值在数组的两端,最左边或者最右边

定义一个新数组k下标从数组最右边开始

双指针前后比较

image.png

209. 长度最小的子数组

滑动窗口:就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果

1.窗口内的值是数组求和 2.起始位置:如果当前窗口的值大于s了,窗口就要向前移动了 3.结束位置:遍历数组的指针

image.png

关键是 : 注意是while循环,而不是if判断,一直判断到这个求和小于target来移动起始位置

59. 螺旋矩阵 II

该题关键是定义循环不变量 循环数组时选定左开右闭 模拟矩阵时从左到右、从上到下、从右到左、从下到上,一圈一圈

image.png

找规律 1.遍历的圈数为 loop = n/2;

2.每个循环圈的的起始位置 startx = 0; starty = 0;

3.控制每条边遍历的长度,每次循环右边界收缩一位 offset +=1;

4.矩阵中间的位置需要单独赋值 n % 2 == 1

5.第二圈开始的时候,起始位置要各自加1, 例如:第一圈起始位置是(0, 0),第二圈起始位置是(1, 1) startx++ starty++