代码随想录算法训练营|第二天977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

977、有序数组的平方

题目建议: 本题关键在于理解双指针思想

题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/

文章讲解:https://programmercarl.com/0977.%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%B9%B3%E6%96%B9.html

视频讲解: https://www.bilibili.com/video/BV1QB4y1D7ep

联想:

我一开始想到的暴力解法是用冒泡排序的,但是TLE了,应该使用快排。看了题解之后发现,根据数组的特性,最大的元素一定出现在两边,因此可以让两个指针向中间靠拢遍历数组。

问题:
看了题解之后,自己写了一遍就ac了。自己用暴力法实现的时候,冒泡排序和快速排序不太熟悉。

今日收获:
双指针法太妙了,虽然提示了用双指针法,但是想到的用法还是不对,忽略了本题中数组的特性。
209.长度最小的子数组

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

题目链接:https://leetcode.cn/problems/minimum-size-subarray-sum/

文章讲解:https://programmercarl.com/0209.%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.html

视频讲解:https://www.bilibili.com/video/BV1tZ4y1q7XE

联想:初始思路是两个for循环暴力列举所有的子序列,题解的思路是滑动窗口,用一个for实现,j代表的是终止位置的下标,关键在于如何移动起始位置。
问题:
全局变量和局部变量的把握不准确,要注意定义的全局变量在进入循环内的变化;时间复杂度为什么是O(n),暂时不理解。
收获:
滑动窗口的精髓在于根据当前窗口和的大小动态调整窗口的长度。

59.螺旋矩阵II

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

题目链接:https://leetcode.cn/problems/spiral-matrix-ii/

文章讲解:https://programmercarl.com/0059.%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5II.html

视频讲解:https://www.bilibili.com/video/BV1SL4y1N7mV/

联想:
这道题完全没思路,边界条件处理不明白。
问题:
看了题解之后,懂了又没完全懂。


5151663854516_.pic_thumb.jpg
5161663854745_.pic_thumb.jpg

收获:
注意用vector定义并初始化二维数组的方式:vector> res(n,vector(n,0));
循环不变量原则的关键应用场景就是对边界的处理,这里题解采用的区间写法是左闭右开。

你可能感兴趣的:(代码随想录算法训练营|第二天977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II)