欣迪

Given a fixed-length integer array arr, duplicate each occurrence of zero, shifting the remaining elements to the right.

Note that elements beyond the length of the original array are not written. Do the above modifications to the input array in place and do not return anything.

Example 1:

Input: arr = [1,0,2,3,0,4,5,0]
Output: [1,0,0,2,3,0,0,4]
Explanation: After calling your function, the input array is modified to: [1,0,0,2,3,0,0,4]

Example 2:

Input: arr = [1,2,3]
Output: [1,2,3]
Explanation: After calling your function, the input array is modified to: [1,2,3]

Constraints:

  • 1 <= arr.length <= 104
  • 0 <= arr[i] <= 9
var duplicateZeros = function(arr) {
    const rounds = arr.length
    for(let i = 0; i < rounds; i++) {
        if (arr[i] === 0) {
            arr.splice(i, 0, 0)
            i++
        }
    }
    arr.length = rounds
};

這題一樣是必須直接改 input 的 array。

不使用多餘的記憶體空間時,控制迴圈中的位置。

大致解法如下:

  • 定義一個原始迴圈的尺寸
  • 進入迴圈後,注意目前迴圈的位置,當增加陣列的內容時,為了避免重複計算,把陣列的位置往下推進一格。

訂閱 IT-Monk

訂閱最新文章的發布消息! 😚😚😚
Loading

作者介紹 - 欣迪

欣迪

從設計到寫程式,發現自己有追求前端技巧的自虐傾向。不斷的踩坑,再從坑裡爬出來,慢慢對攀岩有點心得。 目前在多間公司擔任網站設計顧問。 同時也是網站架設公司負責人。