给定一个数组 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++;
}
}