leetcode_283. 移動零

orastar發表於2020-04-27

1、題目描述

給定一個陣列 nums,編寫一個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。

示例:

輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]
說明:

1、必須在原陣列上操作,不能拷貝額外的陣列。
2、儘量減少操作次數。

2、解題思路


說明:
1、使用m從下標0開始到nums結束,代表待更新的值為0的下標。
2、遍歷陣列下標i,遇到非0值,nums[m]=nums[i];nums=0;

3、複雜度分析

時間複雜度:O(n)
空間複雜度:O(1)

4、c程式碼

void moveZeroes(int* nums, int numsSize) {
    int m = 0; //設定待更新下標
    for (int i = 0; i < numsSize; i++)
    {
        if (nums[i]) { 
            if (m != i) {
                nums[m] = nums[i];
                nums[i] = 0;
            }
            m++;
        }
    }
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31442014/viewspace-2688759/,如需轉載,請註明出處,否則將追究法律責任。

相關文章