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())
}
};