题目
189. 旋转数组
思路
- 翻转数组
若往后移动k个位置,那么倒数的k个元素会变成最前面的元素。所以先把数组整体翻转(倒数k个提前),再分别翻转两个部分(把顺序翻正)。
var rotate = function(nums, k) {
function rotate(nums, left, right){
while(left < right){
[nums[left], nums[right]] = [nums[right], nums[left]];
right--;
left++;
}
}
rotate(nums, 0, nums.length - 1);
rotate(nums, 0, k % nums.length -1);
rotate(nums, k % nums.length, nums.length - 1);
};
var rotate = function(nums, k) {
let len = nums.length;
let ans = [];
for(element of nums){
ans.push(element);
}
for(let i = 0; i < len; i++){
nums[(i + k) % len] = ans[i];
}
};