LeetCode 题解:189. 旋转数组,JavaScript,暴力法,详细注释
原题链接:https://leetcode-cn.com/problems/rotate-array/
此方法对应官方题解的第一种方法,但官方只贴了代码,没有讲解,这里梳理一下思路:
该题实际上是要求将数组的最后k位,移动到数组的前面。
假设输入:
[1,2,3,4,5,6,7]
和 k = 3。暴力法的第一层循环,每次会取出数组的最后一位。
第二层循环,当index=0时,将target放入数组的0位置,nums[0]缓存在target中,此时数组变成了
[7,2,3,4,5,6]
接下来的循环就是将数组每一位向后移动的过程,第二层每次循环的结果如下:
第二层循环完成了将数组最后一位,移动到数组第一位的过程。
之后继续第一层循环,最终将数组的后3位都移动到了数组前方,得到结果:
[5,6,7,1,2,3,4]
```javascript []
/**
* @param {number[]} nums
* @param {number} k
* @return {void} Do not return anything, modify nums in-place instead.
*/
var rotate = function (nums, k) {
for (let i = 0; i < k; i++) {
// 取出数组最末的一个
let target = nums[nums.length - 1];
// 将target移动到数组第一位,之后将数组剩余部分都往后移动一位
for (let j = 0; j < nums.length; j++) {
let temp = nums[j];
nums[j] = target;
target = temp;
}
}
};
```
版权声明: 本文为 InfoQ 作者【Lee Chen】的原创文章。
原文链接:【http://xie.infoq.cn/article/b9eefb29282deb9d3425183aa】。文章转载请联系作者。
评论