In [2]:
# Solution 1
def moveZerosToEnd(a):
count = 0
for i in range(len(a)):
if a[i] != 0:
a[count] = a[i]
count += 1
for i in range(count, len(a)):
a[i] = 0
return count
In [14]:
# Solution 2
def swap(a, i, j):
first = a[i]
a[i] = a[j]
a[j] = first
def moveZerosToEnd2(a):
n = len(a)
indexOfLastNonZero = n - 1
for i in range(n):
if a[i] == 0 and i < indexOfLastNonZero:
while indexOfLastNonZero > i and a[indexOfLastNonZero] == 0:
indexOfLastNonZero = indexOfLastNonZero - 1
swap(a, i, indexOfLastNonZero)
return indexOfLastNonZero
In [3]:
a = [1, 0, -1, 2, 0]
print(moveZerosToEnd(a))
print(a)
In [18]:
a = [1, 0, -1, 2, 0]
b = [0, 0, 0]
c = [1]
print(moveZerosToEnd2(c))
print(c)
In [ ]: