0%

LeetCode-283

题目

Snipaste_2020-11-19_10-04-28.png

结果

Snipaste_2020-11-19_10-27-38.png

代码

借助其它数组

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public void moveZeroes(int[] nums) {
int[] tmp = new int[nums.length];
int index = 0;
for (int num : nums) {
if (num != 0) {
tmp[index++] = num;
}
}
System.arraycopy(tmp, 0, nums, 0, nums.length);
}
}

原地操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Solution {
public void moveZeroes(int[] nums) {
for (int i = nums.length - 1; i >= 0; i--) {
if (nums[i] == 0) {
moveZeroToEnd(nums, i);
}
}
}

private void moveZeroToEnd(int[] nums, int index) {
for (int i = index; i < nums.length - 1; i++) {
if (nums[i + 1] == 0) {
return;
} else {
swap(nums, i, i + 1);
}
}
}

private void swap(int[] nums, int a, int b) {
int tmp = nums[a];
nums[a] = nums[b];
nums[b] = tmp;
}
}