今天仍然是对数组的练习。
977.有序数组的平方
题目描述:给你一个按非递减顺序排序的整数数组 nums,返回每个数字的平方组成的新数组,要求也按 非递减顺序排序。
可以通过暴力解法首先将个数平方放入对应位置,然后再使用还是方法完成不是
这道题下面的题解有复习各种排序解法可以去看一下。
优化解法: 双指针
因为有序序列所以只需要分别比较头和尾平方以后谁大?然后倒着放回来就可以。放满整个数组了。还是很容易想到的。
209.长度最小的子数组。
这道题是通过滑动窗口来查找出最短长度的。
窗口就是 满足其和 ≥ s 的长度最小的 连续 子数组。
窗口的起始位置如何移动:如果当前窗口的值大于s了,窗口就要向前移动了(也就是该缩小了)。
窗口的结束位置如何移动:窗口的结束位置就是遍历数组的指针,也就是for循环里的索引。
窗口的不断移动时大小要在移动的时候改变。可能开始会作不适应写嗯这种连贯的动作。可以尝试一下类似的题目。例如904水果成篮76最小覆盖子串
这样的操作在程序中是很快速且实用的。
!](https://img-blog.csdnimg.cn/c2ecb56774e9495c9802f39ff09e322a.png)
59.螺旋矩阵II
题目描述:给你一个正整数 n ,生成一个包含1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的n x n正方形矩阵 matrix 。
这题刚开始没思路,不知道怎么写,用for循环啥的,很混乱。
看了讲解以后就清楚多了,只是不知道为什么偏移量是加2。然后自己通过画图反而明白了。因为每一层级会少上左右两边,所以偏移量是+2。这道题下的官方体检的c语言版。对于我来说反而更好理解。我把它贴在这里。
螺旋矩阵这样的写法。在一些游戏UI界面的展示上也可以用到,可以给玩家带来独特体验这。