学习目标:
双指针与滑动窗口
学习内容:
- 977有序数组的平方
- 209长度最下的子数组
- 59螺旋矩阵II
1.907有序数组的平方
a.非递减顺序整数数组
b.返回一个非递减顺序数组
c.新数组为旧数组每个数字平方
思路:
1.遍历生成平方数存入新数组
2.排序
双指针法(代码随想录视频)
思路:
1.原数组平方后两侧为数组内最大的数
2.运用两个指针从两侧移动比较
3.大的存入新数组
代码
209长度最小的子数组
a.正整数数组
b.查找数组的和>=s且长度最小
c.返回数组的长度
思路:
1.定义快慢指针相加累计记录值
2.当指针的和>=查找的数值记录两个指针的下标
3.慢指针移动,继续记录
4.比较新得到的数组长度与原来比较保存最短的
5.返回
自写代码未通过
双指针法(代码随想录视频)
滑动窗口(两指针中间的集合)
思路
1.一个for循环做两个for循环的事情
2.不断调节子序列的起始终止位置
3.终止位置随着forloop移动
4.起始位置当集合里边的和>=target移动起始位置
5.Sum要减去起始位置的值★
6.起始位置的更新可能是持续的,要用While
代码
总结注意事项
1.起始位置更新的持续性
2.起始位置更新后原sum数值的更新
3.return返回时判断是否被赋值,既无符合条件的子序列,返回0
59螺旋矩阵II
a.正整数n
b.1-n的方的元素
c.按照顺时针形成正方形矩阵
d.返回一个二维数组
思路:
1.生成N的方,大小的数组 即n个n元素的数组
2.计算循环次数
2.生成数组规律(n-1) 3 12.34.56.78.9
4.123. 456. 789. 101112
13.14.15.16
3.第一次循环为n 第二次循环为n-2 直到n-2<0
(也就是边的循环为n/2)
4.增减x,y坐标确定二维数组的位置赋值
写两遍逻辑乱了直接看的视频
代码随想录视频
要点:
1.处理边界点为关键
2.循环不变量
3.左闭右开
代码:
54.螺旋矩阵
1.确定上下左右边界
2.移动,更新数组
学习时间:
- 10:00-1:00
学习产出:
1.leetcode 4道题
2.掌握滑动窗口,双指针
3.理解循环不变量,如何处理边界点