### 第一章 数组part02
如果基础不好的录友,建议直接视频讲解,这样避免很多时间浪费,因为没接触过的算法,不是轻易就能靠自己思考想出来的。
拓展题目可以先不做
详细布置
209.长度最小的子数组
题目建议: 本题关键在于理解滑动窗口,这个滑动窗口看文字讲解 还挺难理解的,建议大家先看视频讲解。 拓展题目可以先不做。
文章讲解:programmercarl.com/0209.%E9%95…
视频讲解:www.bilibili.com/video/BV1tZ…
59.螺旋矩阵II
题目建议: 本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。
文章讲解:programmercarl.com/0059.%E8%9E…
视频讲解:www.bilibili.com/video/BV1SL…
区间和
前缀和是一种思维巧妙很实用 而且 很有容易理解的一种算法思想,大家可以体会一下
文章讲解:www.programmercarl.com/kamacoder/0…
开发商购买土地
www.programmercarl.com/kamacoder/0…
总结
题目建议:希望大家 也做一个自己 对数组专题的总结
文章链接:programmercarl.com/%E6%95%B0%E…
笔记
长度最小子数组
- 窗口内是什么?
- 如何移动窗口的起始位置?
- 如何移动窗口的结束位置?
窗口就是 满足其和 ≥ s 的长度最小的 连续 子数组。
窗口的起始位置如何移动:如果当前窗口的值大于等于s了,窗口就要向前移动了(也就是该缩小了)。
窗口的结束位置如何移动:窗口的结束位置就是遍历数组的指针,也就是for循环里的索引。
解题的关键在于 窗口的起始位置如何移动
Spiral matrix II
而求解本题依然是要坚持循环不变量原则。
模拟顺时针画矩阵的过程:
- 填充上行从左到右
- 填充右列从上到下
- 填充下行从右到左
- 填充左列从下到上
每次的边界坚持左闭右开区间:
- 第一圈每次填充的都是n-1个元素;
- 第二圈填充的就是 n-2个元素;
- 以此类推;
同时初始化startX与startY,col和row,每次填充的时候其中一个肯定不变,因为填充时肯定是在某一行或者某一列上进行,填充完行/列后,及时更新col和row。