Move Zeroes

方法一: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;
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章