给定一个数组 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)
{
/*/
1)最初left和right是标记的同一个数
2)速度差异是在标记到0时产生的
3)遇到0时 left不动 right继续++
/*/
if(nums[right]!=0)
{
swap(&nums[left],&nums[right]);
left++;
}
right++;
}
}