題目描述

給一個長度固定的list,將裡面出現的0做複製,並將剩餘的元素往右移

解題思路

使用單指針做遍歷,條件有兩個,都符合才做處理

  1. 假如當前元素為0
  2. 考慮最後一個元素也為0要小於list長度

Python

class Solution:
    def duplicateZeros(self, arr: List[int]) -> None:
        """
        Do not return anything, modify arr in-place instead.
        """
        i = 0
        while i < len(arr):
            if arr[i] == 0 and i + 1 < len(arr):
                arr.insert(i+1, 0)
                arr.pop()
                i += 1  
            i += 1

Golang

func duplicateZeros(arr []int)  {
    for i := 0; i < len(arr); i++ {
        if arr[i] == 0 && i+1 < len(arr) {
            arr = append(arr[:i+1], arr[i:len(arr)-1]...)
            i ++
        }
    }
}