發現 0 就把所有數字往後挪一位,從倒數第二位開始挪到倒數第一位

再來是倒數第三位挪到倒數第二位 ....

避免覆蓋掉 0 之後的正常數字

移動完成後 i++ 跳過一位 (因為下一個 i 是我們重複的那個0)

Golang

func duplicateZeros(arr []int)  {
    for i := 0; i < len(arr); i++ {
        if arr[i] == 0 {
            for j := len(arr) - 1; j > i; j-- {
                arr[j] = arr[j - 1]
            }
            i++
        }
    }
}