Appearance
189. 旋转数组
原题链接:LeetCode 189. 旋转数组
题目描述
给定一个整数数组 nums,将数组中的元素向右轮转 k个位置,其中 k是非负数。
示例 1:
`[5,6,7,1,2,3,4]`
示例 2:
- 输入: nums =
[-1,-100,3,99], k = 2 - 输出:
[3,99,-1,-100]解释: 向右轮转 1 步:[99,-1,-100,3]向右轮转 2 步:[3,99,-1,-100]
提示:
- 1 <= nums.length <= 105 -231 <=
nums[i]<= 231 - 1 - 0 <= k <= 105
进阶:
尽可能想出更多的解决方案,至少有 三种 不同的方法可以解决这个问题。
你可以使用空间复杂度为
O(1)的 **原地 **算法解决这个问题吗?
难度: Medium
题解代码
javascript
/**
* @param {number[]} nums
* @param {number} k
* @return {void} Do not return anything, modify nums in-place instead.
*/
var rotate = function(nums, k) {
// 这样做不满足原地算法
// return nums.slice(nums.length - k).concat(nums.slice(0, nums.length - k))
for(let i = 0; i < k; i++) {
nums.unshift(nums.pop())
}
};