# 给你一个长度固定的整数数组 arr，请你将该数组中出现的每个零都复写一遍，并将其余的元素向右平移。 
# 
#  注意：请不要在超过该数组长度的位置写入元素。 
# 
#  要求：请对输入的数组 就地 进行上述修改，不要从函数返回任何东西。 
# 
#  
# 
#  示例 1： 
# 
#  输入：[1,0,2,3,0,4,5,0]
# 输出：null
# 解释：调用函数后，输入的数组将被修改为：[1,0,0,2,3,0,0,4]
#  
# 
#  示例 2： 
# 
#  输入：[1,2,3]
# 输出：null
# 解释：调用函数后，输入的数组将被修改为：[1,2,3]
#  
# 
#  
# 
#  提示： 
# 
#  
#  1 <= arr.length <= 10000 
#  0 <= arr[i] <= 9 
#  
#  Related Topics 数组


# leetcode submit region begin(Prohibit modification and deletion)
class Solution(object):
    def duplicateZeros(self, arr):
        """
        :type arr: List[int]
        :rtype: None Do not return anything, modify arr in-place instead.
        """
        len_array = len(arr)
        flag = False
        for i in range(len_array):
            if arr[i] == 0 and not flag:
                arr.pop()
                arr.insert(i, 0)
                flag = True
            else:
                flag = False


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


arr = [1, 0, 2, 3, 0, 4, 5, 0]
s = Solution2()
s.duplicateZeros(arr)
print(arr)
