leetcode-283 移动零 [Java]

题目:

leetcode-283 移动零 [Java]

 思想:

先统计0的个数,再使用“双指针”,从第一个出现的零开始,把后面非零数移动过来,最后在末尾补全零。

代码:

class Solution {
    public void moveZeroes(int[] nums) {
        int i;
        int j=nums.length-1;
        int flag=0;

        for(i=0;i<nums.length;i++){
            if(nums[i]==0 &&flag==0){
                j=i;//记录第一次出现0的数组下标
                flag=1;
            }
        }

        //这里是一个移动操作,同时也规避了数组中未出现零但会多移动0的情况,如[1]
        for(i=j;i<nums.length;i++){
            if(nums[i]!=0){
                nums[j]=nums[i];
                j++;
            }
        }

        //后续补零
        for(;j<nums.length;j++){
            nums[j]=0;
        }
    }
}

结果:

leetcode-283 移动零 [Java]

 

上一篇:283,乘积最大子序列


下一篇:LeetCode 283. 移动零