2032.至少在两个数组中出现的值
自己写:双指针,从最小的出发,开搞
一阵捣鼓,发现被我整复杂了(从最小出发得一 一比较还有各种情况需要判断)
看完随想录:我是真的笨(一秒懊恼),从两端出发的双指针只需要判断谁的平方值更大以及指针下标位置即可,简单许多。
借图镇楼
时间复杂度:O(n),空间复杂度:O(1)
209.长度最小的子数组
本题思路清晰很多,利用双指针构成滑动窗口直接AC
需要探究的是对细节的推敲
文章讲解:代码随想录
视频讲解:拿下滑动窗口! | LeetCode 209 长度最小的子数组_哔哩哔哩_bilibili
自我思考:同样是运用滑动窗口方法,我只会应用,但其中的使用细节仍然欠缺。
其中,对于两个指针的使用顺序,Carl哥在视频中通过for循环和动态控制分别操控两个指针的方式确实让我眼前一亮,运用合理的方式就可以让指针稳稳的走在自己的道路上。
时间复杂度:O(n),空间复杂度:O(1)
59.螺旋矩阵II
经典模拟题,考虑指针移动的时候还要考虑边界条件
与Carl哥不同,我的解题思路比较直接,把每次能遍历完的行or列直接遍历赋值直到越界或者已经赋值。
该方法思路相比之下更加简单直接,唯一需要考虑的就是1X1的矩阵需要拿出来单独考虑。
文章讲解:代码随想录
视频讲解:一入循环深似海 | LeetCode:59.螺旋矩阵II_哔哩哔哩_bilibili
时间复杂度:O(n²),空间复杂度:O(n²)
总结
数组章节学习选做的题都偏简单,更多的是需要我们去掌握这些方法:二分查找、双指针、滑动窗口和模拟。
最有感触的是在209题写相关题时发现相同方法下我还是缺少一些解难题的能力。为了解决这一问题,我会更认真去思考每个方法,只掌握皮毛终究是不足的。