完整代码实现:
java
class Solution {
public void moveZeroes(int[] nums) {
//双指针法解决这个问题
int slow = 0;
for(int fast = 0;fast<nums.length;fast++){
if(nums[fast] != 0){
int temp = nums[slow];
nums[slow] = nums[fast];
nums[fast] = temp;
slow++;
}
}
}
}
关键步骤详解
- 初始化指针:
slow = 0,fast = 0
- 遍历数组(fast 移动):
如果 nums[fast] != 0:
交换 nums[slow] 和 nums[fast](将非零元素移到左侧)
slow++(慢指针右移,标记下一个非零位置)
如果 nums[fast] == 0:
跳过,fast 继续右移
- 结果:
所有非零元素被移动到 slow 左侧,剩余位置自动补零