面試題(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)
};
相關文章
相關標籤/搜索