Duplicate Zeros

https://leetcode.com/explore/learn/card/fun-with-arrays/525/inserting-items-into-an-array/3245

duplicateZero.py
class Solution:
    def duplicateZeros(self, arr: List[int]) -> None:
        """
        Do not return anything, modify arr in-place instead.
        """
        n = len(arr)
        #新增的0的个数
        zero = arr.count(0)
        for i in range(n-1,-1,-1):
            #当前index在当前新增0 的情况下没有溢出,加!
            if i + zero < n:
                arr[i+zero] = arr[i]
            #当前值为0,如果当前值其实是溢出的0,那么真正新增的0其实为zero-1
            #如果当前值没有溢出的0,之前新增的0也为zero-1,所以无论如何都是zero-1
            
            if arr[i] == 0:
                zero-=1
                #加duplicate
                if zero + i < n:
                    arr[i+zero] = 0
        return arr
            
        

Last updated

Was this helpful?