把零移动到末尾,其他元素顺序不变
代码:
void moveZeroes(int* nums, int numsSize){
int count = 0;
int cur = 0;
for (int i = 0; i < numsSize; i++) {
if (nums[i] == 0) {
count++;
continue;
} else {
nums[cur] = nums[i];
cur++;
}
}
for (int i = 0; i < count; i++) {
nums[numsSize - 1 - i] = 0;
}
}
对零的个数进行计数,还有一个索引,也就是非零元素应该所在的位置,最后再把后面的位置设置为0。
结果