283. 移动零

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

示例:

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

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

//双指针,左指针指向已处理序列末尾,右指针指向未处理序列头部
//每次只将非零数和零交换
void swap(int *a,int *b){
    int temp=*a;
    *a=*b;
    *b=temp;
}

void moveZeroes(int* nums, int numsSize){
    int left=0,right=0;
    while (right<numsSize){
        if(nums[right]!=0){
            swap(nums+left,nums+right);
            left++;
        }
        right++;
    }
}

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页