Skip to content
On this page

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

技术文档集合