题目
初见思路
977.有序数组的平方
想到了用双指针方法,一头一尾。在while loop中先计算平方并且in place替换平方的结果。谁的平方大,就把对应的平方结果存进result vector,并且更新对应脚标,l
往右移, r
往左移。测试的结果显示内容数字不正常,发现不应该in place替换平方的结果。
209.长度最小的子数组
除了暴力解法没有思路,于是看了一下代码随想录的解析,看了一下滑动窗口是怎么用的。主要是需要注意的就是,如果 sum
比 target
小的话就只移动窗口右边的脚标,比sum大或者等于的话就移动左边的脚标并且从sum中减去原本左脚标指向的值。用了一个bool来确定是否找到过比target大或者等于的窗口长度。返回值时一开始返回成了当前窗口的长度,而不是最短窗口的长度,在loop中需要记录和更新最短窗口长度。
59.螺旋矩阵II
之前做过,只记得每行遵从左闭右开的原则,直接看了代码随想录。
更新思路
977.有序数组的平方
看了代码随想录后明白不应该in place替换平方的结果。
209.长度最小的子数组
返回值时一开始返回成了当前窗口的长度,而不是最短窗口的长度,在loop中需要记录和更新最短窗口长度。
59.螺旋矩阵II
看了解析后,自己写了一下。只要遵守一个原则就不会乱。(同时注意,for loop之后变量会增加/减少到超出condition)。
今日总结
学习时长
2h
收获
需要熟练使用双指针,熟悉滑动窗口。注意,for loop之后变量会增加/减少到超出condition。