【双指针】LeetCode 283. 移动零
题目链接
思路
设定两个指针 i
和 j
,使用 j
遍历数组,将非零元素送到 i
的位置后 i++
。经过第一次循环后所有的非零数都被送到了数字前面,只需要将剩余的位置变为 0 即可。
代码
class Solution {
public void moveZeroes(int[] nums) {
int i = 0;
int j = 0;
while(j < nums.length){
// 非0元素放在前面
if(nums[j] != 0){
nums[i] = nums[j];
i++;
}
j++;
}
while(i < nums.length){
nums[i] = 0;
i++;
}
}
}