移动零

2021-04-07  本文已影响0人  YOLO_2a2d

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

示例:

输入: [0,1,0,3,12]
输出: [1,3,12,0,0]

说明:

必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。

//暴力法:找到一个零就将其往后移动

void moveZeroes(int* nums, int numsSize){

    int count=0;            ////统计零的个数
    int i=0;

    
    while(i<numsSize-count)         ////依据零的个数减少规模
    {

        if(nums[i]==0)
        {
            for(int j=i;j<numsSize-1;j++)       ////将当前位置的0值,移动到最后的位置
            {
                int t=nums[j];
                nums[j]=nums[j+1];
                nums[j+1]=t;
            }

            i=-1;           //让数据从新从头开始检测
            count++;    
        }

        i++;
    }

}

上一篇下一篇

猜你喜欢

热点阅读