Leetcode:977.有序数组的平方

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

解题思路:本题属于双指针思想的进阶题,需要去思考如何去合理的利用双指针对平方后的有序数组进行排序,做本题时首先要意识到平方之后数组的最大值肯定位于数组的左右两侧,所以将两指针分别设为左指针和右指针,分别比较指针指向的数字平方之后的大小,若是左指针指向的数字平方之后的值left_val较大,则将left_val放入辅助数组中的最后一个,将左指针向后移动一位,继续跟右指针进行比较。反之亦然,只不过有所区别的是将右指针向前移动一位。

Leetcode: 209.长度最小的子数组

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

解题思路:本题属于滑动窗口问题,本题难度在于如何有效的确定滑动窗口的左右边界问题,题目中要寻找目标和大于等于target的最短子数组,故本题的思路便在于先确定合适的右边界,及从数组开始到右边界的和要大于等于target,此时再将左边界从数组开始开始缓慢移动,依次找到此时最短的子数组使其和大于等于target,并通过result记录满足条件数组的最短长度,这样再不同的右边界时,移动左边界去寻找子数组一定能够进行不断的更新result,直至搜索完整个数组。这里需要注意的是,每次左边界开始移动的位置都不一样,都是上一次左边界停止的位置,而且在左边界开始移动时注意子数组之和sum要减去被左边界排除的值 ,每次右边界开始移动时要注意子数组之和sum要加上被右边界包括的值。

Leetcode:59 螺旋矩阵||

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

解题思路:本题的关键还是在于转圈的逻辑,一定要谨记循环不变量原则,即在每次进行区间定义时都要使用相同的区间范围原则(左闭右开),第二个在做这个题目是需要注意两点,1:如果是n*n的矩阵,只需要转n / 2圈便可以完成赋值。2:如果是n是奇数,那么矩阵最中间还有一个空位需要赋值,只需再循环结束后判断n是否为奇数,若为则把中间的位置赋值为n*n即可。