Solve "Move Zeroes to End"

Write a function to modify an array of integers in-place such that all of the
zeroes in the array are at the end, and the order of the other integers is not
changed.
This commit is contained in:
William Carroll 2020-11-15 13:51:46 +00:00
parent 09cd819a70
commit c8330adfcb

View file

@ -0,0 +1,26 @@
def move_zeroes_to_end(xs):
n_zeroes = 0
for x in xs:
if x == 0:
n_zeroes += 1
i = 0
while i < len(xs) - 1:
if xs[i] == 0:
j = i + 1
while j < len(xs) and xs[j] == 0:
j += 1
if j >= len(xs):
break
xs[i], xs[j] = xs[j], xs[i]
i += 1
# add zeroes to the end
for i in range(n_zeroes):
xs[len(xs) - 1 - i] = 0
xs = [1, 2, 0, 3, 4, 0, 0, 5, 0]
print(xs)
move_zeroes_to_end(xs)
assert xs == [1, 2, 3, 4, 5, 0, 0, 0, 0]
print(xs)
print("Success!")