https://leetcode.com/problems/move-zeroes/description/
题意:把数组中所有0都移到最后。
思路1:非0的数字向前压缩,如102030压缩后为123,后面的数字置0
class Solution {
public void moveZeroes(int[] nums) {
int len = nums.length;
int index = 0;
for(int i = 0;i < len;i++) {
if(nums[i] != 0) {
nums[index++] = nums[i];
}
}
for(int i = index;i < len;i++)
nums[i] = 0;
}
}
思路2:遍历数组,遇到0时从数组末尾开始遍历,跳过0的位置,不为0的则替换位置
class Solution {
public void moveZeroes(int[] nums) {
int len = nums.length;
for(int i = 0;i < len;i++) {
if(nums[i] == 0) {
for(int j = len-1; j > i;j--){
if(nums[j] != 0) {
int tmp = nums[j];
nums[j] = nums[i];
nums[i] = tmp;
}
}
}
}
}
}