Skip to content

Commit 2e0c05d

Browse files
committed
Add MoveZeroes
1 parent 4e463dc commit 2e0c05d

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

Diff for: MoveZeroes.java

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
public class MoveZeroes {
2+
3+
public static void main(String[] args) {
4+
int[] nums = new int[]{0, 1, 0, 3, 12};
5+
new MoveZeroes().moveZeroes(nums);
6+
for (int x : nums) {
7+
System.out.print(x + " ");
8+
}
9+
}
10+
11+
public void moveZeroes(int[] nums) {
12+
if (nums != null && nums.length > 0) {
13+
int length = nums.length;
14+
int[] zeroArray = new int[length + 1];
15+
int[] nonZeroArray = new int[length + 1];
16+
17+
int zeroIndex = 0;
18+
int nonZeroIndex = 0;
19+
for (int i = 0, j = length -1; i < j; i++, j--) {
20+
if (nums[i] == 0) {
21+
zeroArray[zeroIndex++] = i + 1;
22+
} else {
23+
nonZeroArray[nonZeroIndex++] = i + 1;
24+
}
25+
}
26+
for (int i = 0; i < zeroArray.length; i++) {
27+
int zIndex = zeroArray[i];
28+
int nzIndex = nonZeroArray[i];
29+
if (zIndex > 0 && zIndex < nzIndex) {
30+
nums[zIndex - 1] = nums[nzIndex - 1];
31+
nums[nzIndex - 1] = 0;
32+
}
33+
}
34+
}
35+
}
36+
}

0 commit comments

Comments
 (0)