283. Move Zeroes(数组中的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;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容