[TOC]javascript
把他當作一到簡單的題來作,不要想太多了就好也能夠不整那些花裏胡哨的,直接旋轉數組n次,我一開始也想到了這個辦法,可是以爲太簡單並且效率低下,想了好久也沒想到合適的辦法java
使用額外的數組算法
用一個額外的數組將每一個元素放到對應的位置就好 下標爲i的位置對應(i+k)%數組長度 ,而後把新的數組拷貝(深拷貝)到原數組便可數組
/** * @param {number[]} nums * @param {number} k * @return {void} Do not return anything, modify nums in-place instead. */
var rotate = function (nums, k) {
const re = []
for (let i = 0; i < nums.length; i++) {
re[(i + k) % nums.length] = nums[i]
}
for (let j = 0; j < nums.length; j++) {
nums[j] = re[j]
}
}
複製代碼
傳入[1,2,3,4,5,6,7] 3
的運行結果spa
[5,6,7,1,2,3,4]
複製代碼
執行結果code
執行用時 :68 ms, 在全部 javascript 提交中擊敗了97.94% 的用戶
內存消耗 :36.1 MB, 在全部 javascript 提交中擊敗了9.91%的用戶
複製代碼