977 有序数组的平方
题目链接:977.有序数组的平方 - 力扣 LeetCode
这道题我们第一想法就是暴力解法,将数组的每个数直接平方求解,然后再来个排序,美汁汁!!
暴力代码:
当然,我们不能直接就暴力解决(偶尔玩一下还是可以哒),否则面试官也会暴力的把咱们请出去,所以第二种方法就是双指针解法
双指针解法: 因为平方后不管正数还是负数都会变成正数,所以平方后的最大值要么是最左边的值,要么是最右边的值,所以我们可以用双指针控制左右一步一步往中间缩进,然后再用一个变量去控制新数组的位置就可以了
双指针代码:
209 长度最小的子数组
题目链接209.长度最小的子数组 - 力扣 LeetCode
这道题我们第一想法就是暴力递归,但是还是那句话,咱们暴力,面试官也会暴力~~~
暴力代码:
当然,我们还有第二种,滑动窗口(其实本质就是双指针),我们用两个指针移动来确定数组的区间, 当区间的数大于等于target时,我们就计算一次长度,并且减去最左面的数,重新确定区间,然后左指针 右移动,我们需要注意的是,当总和超过target时,我们需要用while判断,因为总和减去left位置对应的值后依然可能大于等于target,所以我们不能用if来判断
代码如下:
59 螺旋矩阵II
螺旋矩阵其实这道题没有考察算法,而是考察我们对代码的一个掌控能力,看起来不难,但是细节非常多 稍微有一个不注意就会出现错误,我们需要遵循不变量的原则,要么全定义为左闭右开,要么全定义左开右闭(左开右开和左闭右闭不可以呦) 剩下的就是代码的控制了
代码如下: