題目:原題鏈接(簡單)
解法 | 時間複雜度 | 空間複雜度 | 執行用時 |
---|---|---|---|
Ans 1 (Python) | 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