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:
parent
09cd819a70
commit
c8330adfcb
1 changed files with 26 additions and 0 deletions
26
scratch/facebook/move-zeroes-to-end.py
Normal file
26
scratch/facebook/move-zeroes-to-end.py
Normal 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!")
|
Loading…
Reference in a new issue