Leetcode演算法題(C語言)9--移動零
阿新 • • 發佈:2018-12-12
題目:移動零
給定一個數組 nums,編寫一個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。
示例:
輸入: [0,1,0,3,12] 輸出: [1,3,12,0,0] 說明: 1 必須在原陣列上操作,不能拷貝額外的陣列。 2 儘量減少操作次數。
程式碼實現:
void moveZeroes(int* nums, int numsSize) {
int i, j = 0;
for(i = 0; (i < (numsSize - 1))||(j < numsSize); i++)
{
if(nums[i] == 0)
{
/* 定位 */
if(j == 0)
j = i + 1;
/* 濾除0 */
for(;((j < numsSize) && (nums[j]==0));j++);
if(j == numsSize)
break;
nums[i] = nums[j];
nums[j] = 0;
}
}
}