美文网首页
283. Move Zeroes(数组中的0移到后面)

283. Move Zeroes(数组中的0移到后面)

作者: Ching_Lee | 来源:发表于2018-02-16 19:24 被阅读0次

解法1:
遍历数组,将所有的非零元素加入list中,将list中的内容复制给数组,然后其余添加0。

class Solution {
    public void moveZeroes(int[] nums) {
        List<Integer> nonZeroElement=new ArrayList<Integer>();
        for(int i=0;i<nums.length;i++)
            if(nums[i]!=0)
               nonZeroElement.add(nums[i]);
            
        for(int i=0;i<nonZeroElement.size();i++)
            nums[i]=nonZeroElement.get(i);
        
        for(int i=nonZeroElement.size();i<nums.length;i++)
            nums[i]=0;
    }
}

解法2:



用k保存非零元素的指针。

class Solution {
    public void moveZeroes(int[] nums) {
        //用k来保存非零元素的指针
        int k=0;
        for(int i=0;i<nums.length;i++){
            //如果是非零元素,就把它放到k位置,然后k++
           if(nums[i]!=0)
           {
               nums[k]=nums[i];
               k++;
           }  
        }
        
        //剩下的元素补0
        for(;k<nums.length;k++)
            nums[k]=0;
    }
}

相关文章

网友评论

      本文标题:283. Move Zeroes(数组中的0移到后面)

      本文链接:https://www.haomeiwen.com/subject/jsmptftx.html