Skip to content

Commit dff28a2

Browse files
committed
Move Zeroes
1 parent 67de492 commit dff28a2

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

Arrays & Strings/Move Zeroes/Explanation.md

Whitespace-only changes.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# 👉 Brute Force Approach (Using extra space)
2+
def moveZerosBruteForce(n: int, a: [int]) -> [int]:
3+
temp = []
4+
for i in range(n):
5+
if a[i] != 0:
6+
temp.append(a[i])
7+
nz = len(temp)
8+
for i in range(nz):
9+
a[i] = temp[i]
10+
for i in range(nz, n):
11+
a[i] = 0
12+
return a
13+
14+
15+
# 👉 Optimal Approach (In-place, using two pointers)
16+
def moveZerosOptimal(n: int, a: [int]) -> [int]:
17+
j = -1
18+
for i in range(n):
19+
if a[i] == 0:
20+
j = i
21+
break
22+
if j == -1:
23+
return a
24+
for i in range(j + 1, n):
25+
if a[i] != 0:
26+
a[i], a[j] = a[j], a[i]
27+
j += 1
28+
return a
29+
30+
31+
# ✅ Test Cases
32+
if __name__ == "__main__":
33+
print("Test Case 1:")
34+
arr1 = [1, 0, 2, 3, 2, 0, 0, 4, 5, 1]
35+
n1 = len(arr1)
36+
print("Original Array:", arr1)
37+
38+
result_brute = moveZerosBruteForce(n1, arr1.copy())
39+
print("Brute Force Result:", result_brute)
40+
41+
result_optimal = moveZerosOptimal(n1, arr1.copy())
42+
print("Optimal Result :", result_optimal)
43+
44+
print("\nTest Case 2:")
45+
arr2 = [0, 0, 0, 0, 1]
46+
n2 = len(arr2)
47+
print("Original Array:", arr2)
48+
49+
result_brute = moveZerosBruteForce(n2, arr2.copy())
50+
print("Brute Force Result:", result_brute)
51+
52+
result_optimal = moveZerosOptimal(n2, arr2.copy())
53+
print("Optimal Result :", result_optimal)
54+
55+
print("\nTest Case 3:")
56+
arr3 = [1, 2, 3, 4, 5]
57+
n3 = len(arr3)
58+
print("Original Array:", arr3)
59+
60+
result_brute = moveZerosBruteForce(n3, arr3.copy())
61+
print("Brute Force Result:", result_brute)
62+
63+
result_optimal = moveZerosOptimal(n3, arr3.copy())
64+
print("Optimal Result :", result_optimal)

0 commit comments

Comments
 (0)