题目:
难度:Easy
相关话题:数组
给定一个数组,将数组中的元素向右移动k 个位置,其中k 是非负数。
示例 1:
输入: [1,2,3,4,5,6,7] 和 k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右旋转 1 步: [7,1,2,3,4,5,6]
向右旋转 2 步: [6,7,1,2,3,4,5]
向右旋转 3 步: [5,6,7,1,2,3,4]
示例2:
输入: [-1,-100,3,99] 和 k = 2
输出: [3,99,-1,-100]
解释:
向右旋转 1 步: [99,-1,-100,3]
向右旋转 2 步: [3,99,-1,-100]
说明:
/**
* @来源: Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
* @介绍:一个致力于帮助开发者用代码改变世界为使命的平台,每天都可以在这里找到技术世界的头条内容
* @param {number[]} nums
* @param {number} k
* @return {void} Do not return anything, modify nums in-place instead.
*/
var rotate = function(nums, k) {
function reverse(arr, begin, end) {
while(begin < end){
var temp = arr[begin]
arr[begin] = arr[end]
arr[end] = temp
begin++
end--
}
}
var length = nums.length
var mod = k % length
if (mod === 0) {
return
}
reverse(nums, length - mod, length -1)
reverse(nums, 0, length - mod - 1)
reverse(nums, 0, length - 1)
};
扩展阅读: