涉及题目
- 数组的旋转
189-旋转数组-中等、396-旋转函数-中等 - 特定顺序遍历二维数组
54-螺旋矩阵-中等、59-螺旋矩阵II-中等、498-对角线遍历-中等
总结
- 对于189,通过观察给出的用例,可以发现:向右移动k位,相当于数组元素逆序,从下标为k的位置分成左右两部分,分别再做一次逆序即可。另外,官方题解提到的环状替换也不失为一种方法。
- 396中,可以不对数组进行移动,而是通过移动与数组元素进行乘积的乘数,有一种错位相乘的感觉,如图:

图中的i表示A数组的下标;n表示A数组的长度;每一个F乘数数组后面的式子,表示F函数的乘数与A数组元素下标之间的关系。
比如:F(n-2)=(2+0)%5*A[0]+(2+1)%5*A[1]+(2+2)%5*A[2]+(2+3)%5*A[3]+(2+4)%5*A[4],时间复杂度是O(n)。
当然,还有一种方法是利用公式计算:F(k+1) = F(k) + S - n * Bk[n-1] - 对于54,可以使用模拟螺旋动作的方式,通过一个direction数组,去决定旋转的方向,从而将数组元素放入list中;也可以使用递归的方式,将外围一圈的数字加入list中,再将内围的数组看作一个新的矩阵,将其外围一圈的数字加入到list中;对于这种解法,需要注意边界问题。
- 对于依据特定顺序进行遍历数组的题目,可以建立一个direction数组改变数组遍历方向。
本文介绍了LeetCode中的两组数组题目,包括189-旋转数组和396-旋转函数,重点讲解了旋转数组的思路,以及54-螺旋矩阵和59-螺旋矩阵II的解决方法,提到了使用direction数组来改变遍历方向的技巧。
_数组类_5&6:数组的旋转、特定顺序遍历二维数组&spm=1001.2101.3001.5002&articleId=113746391&d=1&t=3&u=6e6d12336d0845ebba6d858b45787cd0)
439

被折叠的 条评论
为什么被折叠?



