- 算法
- 1.首先从数组头开始填充非0元素
- 2.剩下的全是0
public void moveZeroes(int[] nums) {
if (nums == null || nums.length == 0) {
return;
}
int i = 0;
for (int x : nums) {
if (x != 0) {
nums[i++] = x;
}
}
while (i < nums.length) {
nums[i++] = 0;
}
} func moveZeroes(nums []int) {
if nums == nil || len(nums) == 0 {
return
}
i := 0
for _, x := range nums {
if x != 0 {
nums[i] = x
i++
}
}
for i < len(nums) {
nums[i] = 0
i++
}
} - 算法
- 1.插入排序的思想
- 2.遇到非0的元素,往前找到最左边的0与之交换即可
public void moveZeroes(int[] nums) {
for (int i = 1; i < nums.length; i++) {
if (nums[i] != 0) {
int j = i - 1;
while (j >= 0 && nums[j] == 0) {
j--;
}
swap(nums, j+1, i);
}
}
}
private void swap(int[] nums, int x, int y) {
int temp = nums[x];
nums[x] = nums[y];
nums[y] = temp;
} func moveZeroes(nums []int) {
for i := 1; i < len(nums); i++ {
if nums[i] != 0 {
j := i - 1
for j >= 0 && nums[j] == 0 {
j--
}
nums[i], nums[j+1] = nums[j+1], nums[i]
}
}
}