977. 有序数组的平方
题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
这道题也是之前看过的,也有思路,迅速解决,没有什么太大问题。
209. 长度最小的子数组
题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
相比之下,这个题目就没有什么思路了,我一开始想的是先找到最大的那个数字然后左右滑动,但也没有想明白边界怎么办以及左右移动的条件是什么。
滑动窗口(满脑子都是计网)是指首先先找到一个满足的子队列,然后再将其缩小到不满足条件,当发现不满足条件的时候再向后扩大,直到窗口整体上达到了向右移动的趋势。
整个过程中,这个窗口两边如何移动是比较关键的点,要进行理解。
对答案的时候还发现了几个小问题:
1. 可以给minLen赋值Interger.MAX_VALUE;
2. 库函数Math.min不了解;
3. 我用了一个flag变量来看有没有满足要求的,其实可以通过对比result是否赋值了来查看。
59. 螺旋矩阵
题目链接:https://leetcode.cn/problems/spiral-matrix-ii/description/
很经典的题,学校做oj也做过几次了,主要是边界处理。
写的已经比较熟练了,就是每次在对目标边进行处理的时候,要注意那个边长是相对值,而不是坐标的绝对值,进行for循环时,需要进行一个对长度的处理。
心得:
第一题和第三题会,中间的滑动窗口忘记了。对于双指针,感觉应该进行一个题型整理。
看了几篇博客,有提到双指针就是减少一次暴力for循环,所以对数组需要重复遍历的时候就要使用这种方法。
我感觉977题还是比较直观的,因为带复数平方后自然是头尾大,这个属于对向的指针,而昨天的题目是快慢指针的应用,是同向的。滑动窗口本质上也是双指针,主要是思考如何能更快的遍历(该题中有子数组的出现,要求了连续)。