LeeCode283移动零(Java)(双指针)

题目链接: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++;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43590593/article/details/113574849