1089 复写零-简单

题目:

给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。

注意:请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。

分析:

直接遍历,遇到 零 时,将后续的元素向右移动一格。

// date 2020/04/19
func duplicateZeros(arr []int)  {
    n := len(arr)
    j := 0

    for i := 0; i < n; i++ {
        if arr[i] == 0 {
            // copy and remove the last one
            j = n-2
            for j > i {
                arr[j+1] = arr[j]
                j--
            }
            arr[j+1] = 0
            i++
        }
    }
}

最后更新于