敘述
這是 Algorithm I
的第二天第二個題目,總共有兩題。
- 難度:
Medium
- 花費時間: 2hr
- 題目
給你一個陣列 nums ,和一個數字 k ,把陣列由前反轉 k 次,不用回傳任何東西,原地修改陣列(in place)
至少有三種方式可以完成。
點我開啟限制與範例
限制:
1 <= nums.length <= 105
-231 <= nums[i] <= 231 - 1
0 <= k <= 105
Example 1:
1 | Input: nums = [1,2,3,4,5,6,7], k = 3 |
Example 2:
1 | Input: nums = [-1,-100,3,99], k = 2 |
筆記
第一種作法: JS 內建函式
這作法算是有點作弊,使用到了三個 JS 內建函式,分別是:
- Array.prototype.splice(): 在此處的用法是把陣列從後面第 k 位的位置分離出新的陣列。
- Spread syntax (…): 展開運算子,可以把陣列展開。
- Array.prototype.unshift(): 把資料加到陣列的最前面。
那把這三個步驟結合起來,就可以寫出過程了。
1 | var rotate = function (nums, k) { |
成績
JS 內建函式