master-algorithms-py/arrays_and_strings/array-duplicate-zeros.py
2023-07-30 15:54:21 -07:00

38 lines
855 B
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author: bt3gl
# Given a fixed-length integer array arr, duplicate each occurrence of zero,
# shifting the remaining elements to the right.
def duplicate_zeros(arr: list[int]) -> list[int]:
"""
Do not return anything, modify arr in-place instead.
"""
i = 0
while i < len(arr):
if arr[i] == 0 and i != len(arr) - 1:
range_here = len(arr) - (i + 2)
while range_here > 0:
arr[i + range_here + 1] = arr[i + range_here]
range_here -= 1
arr[i+1] = 0
i += 2
else:
i += 1
return arr
if __name__ == "__main__":
arr = [1, 0, 2, 3, 0, 4, 5, 0]
print(duplicate_zeros(arr))