leetcode 283. 移动零 C语言

leetcode 283. 移动零 C语言_第1张图片
循环判断,是0则后面的数都左移一位,最后一位置零。

void moveZeroes(int* nums, int numsSize) {
    int i=0,j,sum=0;
    while(isum)//sum记录0的个数,当循环到后面的数都是0时,结束循环。
    { if(nums[i]==0) 
         {for(j=i;j1-sum;j++)
                        nums[j]=nums[j+1];            
             nums[numsSize-sum-1]=0;
             sum++;
             i=0; //每次移动一遍之后,又要从第一个开始判断 
          }    
     else {i++;}
    }
    return nums;
}

搜到的更简单的解法:
让K = 0,然后依次找数组中不是0的数字,依次赋值在K处。再把从K开始,到数组尾部的位置赋值为0。

void moveZeroes(int* nums, int numsSize) {
    int k=0;
    for(int i=0;iif(nums[i]!=0){
            nums[k++]=nums[i];
        }
    }
    for(;k0;
    }
    return nums;
}

你可能感兴趣的:(leetcode)