题目链接:LeeCode283移动零
题目描述:
双指针,左指针一步一步走,每次左指针遇见0就用右指针找第一个不等于零的数换过来,然后左指针接着往下找
class Solution {
public void moveZeroes(int[] nums) {
//初始化左右指针
int l=0,r=1;
while(l< nums.length){
//当左指针遇见零
if(nums[l]==0){
//右指针找一个不等于0的数
while(nums[l]==0&&r< nums.length&&nums[r]==0)r++;
//右指针找到最后没找到不等于0的数就结束
if(r== nums.length)return;
//交换
nums[l]=nums[r];
nums[r]=0;
}
//两个指针后移
l++;
r++;
}
}
}