力扣链接:283. 移动零 - 力扣(LeetCode)
思路:利用双指针将数组分为三个区间,三个区间分别表示的是:非0元素、0、待处理元素
当arr[cur] != 0时
[0,dest]区间就需要加一,所以dest++
然后再交换arr[dest] ,arr[cur]
代码如下:
class Solution {
public void moveZeroes(int[] nums) {
for(int cur = 0, dest = -1; cur < nums.length; cur++){
//非 0 就让dest++,再交换数值
if(nums[cur] != 0){
dest++;
int tmp = nums[dest];
nums[dest] = nums[cur];
nums[cur] = tmp;
}
}
}
}