leetcode283 MoveZeros将数组中的0挪到数组尾部

闲的没事,搞个博客玩玩,最近要找工作,就上leetcode玩玩,做的第一个题1A。过一阵会大量刷的。

题意:把0挪到数组的最右边。For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].

思路:每个数字都有挪后自己的位置,即前面几个零就往前挪几位,用一个mark记录一下,挪完最后处理一下有多少零右边放多少零。


void moveZeroes(int* nums, int numsSize) {
    int mark = 0;
    for(int i = 0; i < numsSize; i++)
    {
        if(nums[i] == 0)
            mark++;
        else
            nums[i - mark] =  nums[i];
    }
    for(int i = numsSize - 1; i > numsSize - 1 - mark; i--)
        nums[i] = 0;
}


你可能感兴趣的:(LeetCode)