LeetCode題解(0283):將數組中的零移動到數組結尾(Python)

題目:原題鏈接(簡單)

解法 時間複雜度 空間複雜度 執行用時
Ans 1 (Python) O(n2)O(n^2) O(1) 460ms (5.71%)
Ans 2 (Python) O(n) O(n) 40ms (85.03%)

LeetCode的Python執行用時隨緣,只要時間複雜度沒有明顯差異,執行用時一般都在同一個量級,僅作參考意義。

解法一(兩層迭代):

def moveZeroes(self, nums: List[int]) -> None:
    size = len(nums)
    i = 0
    zero = 0
    while i + zero < size:
        n = nums[i]
        if n == 0:
            for j in range(i, len(nums) - 1):
                nums[j] = nums[j + 1]
            nums[-1] = 0
            zero += 1
        else:
            i += 1

解法二(數組存儲非0位):

def moveZeroes(self, nums: List[int]) -> None:
    sites = []
    for i in range(len(nums)):
        n = nums[i]
        if n != 0:
            sites.append(n)

    index = 0
    for n in sites:
        nums[index] = n
        index += 1

    for i in range(len(sites), len(nums)):
        nums[i] = 0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章