面试题(9)之 leetcode-189

题目描述

解法一:

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {void} Do not return anything, modify nums in-place instead. - 不要返回任何内容,而是在适当的位置修改nums。
 */
var rotate = function(nums, k) {
  let length = nums.length
  let tailArr = nums.slice(length - k)
  nums.unshift(...tailArr)
  nums.splice(length, k)
};

 

解法二:

var rotate = function(nums, k) {
    while (k--) {
        // 每次将nums最后的元素切换到开头
        nums.splice(0, 0, nums.pop())
    }
};

 

解法三:

var rotate = function(nums, k) {
  while (k--) {
    nums.unshift(nums.pop())  
  }
  console.log(nums)
};

 

解法四:

思路: 截取、链接,不使用 concat 方法保证空间O(1)
var rotate = function(nums, k) {
  let a = nums.splice(nums.length-k);
  nums.splice(0,0,...a)
  console.log(nums)
};
相关文章
相关标签/搜索