【java】实战-力扣题库:移动零
问题描述
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
问题分析
定义快慢双指针,一个指针遍历,一个指针指着为 0 的数据。
因为确定把 数据 0 移动到数组末尾,可以设一个 计数器(慢指针实现),统计遍历过程中0的数量。
把非零的移动到慢指针指向的区域。
最后,快指针遍历完,从慢指针开始填充0.
代码实现
class Solution {
public void moveZeroes(int[] nums) {
int i=0;
int j=0;
for(;i<nums.length;i++){
if(nums[i]!=0){
nums[j]=nums[i];
j++;
}
}
for(i=j;i<nums.length;i++){
nums[i]=0;
}
}
}