方法一:C++
遇見非0往前交換,0往後竄
swap時要包含以下兩個:
#include<iostream>
using namespace std;
子函數:
void moveZeroes(int* nums, int numsSize) {
int last = 0, cur = 0;
while (cur < numsSize) {
if (nums[cur] != 0) {
swap(nums[last], nums[cur]);
last++;
}
cur++;
}
}
方法二:有幾個0往前挪幾個位置,幾個0後面補幾個0
void moveZeroes(int* nums, int numsSize) {
int totalZeros = 0;
for(int i = 0; i < numsSize; i++) {
if(nums[i] == 0) {
totalZeros++;
}
else {
nums[i - totalZeros] = nums[i];
}
}
for(int i = (numsSize - totalZeros); i < numsSize; i++) {
nums[i] = 0;
}
}