1. 程式人生 > 其它 >leetcode-283:移動零

leetcode-283:移動零

技術標籤:演算法從零開始pythonleetcode演算法python

LC 移動零

題目

題目連結
給定一個數組 nums,編寫一個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。
示例:

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

說明:

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

解題:

方法一:雙指標(lc官方的解法)
在這裡插入圖片描述

class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        n = len(nums)
left = right = 0 while right < n: if nums[right] != 0: nums[left], nums[right] = nums[right], nums[left] left += 1 right += 1

方法二:可以在其他陣列上操作的情況下

class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
rt = [] zero_num = 0 for num in nums: if num!=0: rt.append(num) else: zero_num+=1 nums[:] = rt+[0]*zero_num

這樣子執行時間少,但是佔用記憶體大