DAY02 数组part02

100 阅读2分钟

  ### 第一章 数组part02

如果基础不好的录友,建议直接视频讲解,这样避免很多时间浪费,因为没接触过的算法,不是轻易就能靠自己思考想出来的。

拓展题目可以先不做

详细布置

209.长度最小的子数组

题目建议: 本题关键在于理解滑动窗口,这个滑动窗口看文字讲解 还挺难理解的,建议大家先看视频讲解。 拓展题目可以先不做。

题目链接:leetcode.cn/problems/mi…

文章讲解:programmercarl.com/0209.%E9%95…

视频讲解:www.bilibili.com/video/BV1tZ…

59.螺旋矩阵II

题目建议: 本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。

题目链接:leetcode.cn/problems/sp…

文章讲解: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。