Java教程

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]的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!