美文网首页
2018-05-20

2018-05-20

作者: 红枣枸杞OP | 来源:发表于2018-05-20 12:26 被阅读0次

[LeetCode283]移动零

  • 第一次尝试
class Solution {
    public void moveZeroes(int[] nums) {
        int i,j;
        int s=nums.length;
        int count = 0;
        for(i=0;i<s-1;i++)
            if(nums[i]==0)
            {    count++;
                for(j=i;j<s-1;j++)
                {
                    nums[j]=nums[j+1];
                }
            } 
        for(i=0;i<count;i++)
         {
            nums[s-1-i]=0;
        }
    }  
}

失败案例:

输入【0,0,1】
输出【0,1,0】
预期【1,0,0】

由于没有考虑到连续0的情况,导致没有考虑到移动一次后可能出现nums[0]==0的情况

  • 第二次尝试
public class Solution {
    public void moveZeroes(int[] nums) {
        int i,j;
        int s=nums.length;
        int count = 0;
       for(i=0;i<s;i++)
       {
           if(nums[i]!=0)
           {
               nums[count] = nums[i];
               count ++;
           }
       }
        for(i=count;i<s;i++)
         {
            nums[i]=0;
        }
    }
}

改用count来记录非0的数,然后把非零的数都从位置0开始连续排列,最后把空缺的位置都置0

相关文章

网友评论

      本文标题:2018-05-20

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