leetcode-283:移動零
阿新 • • 發佈:2021-01-25
技術標籤:演算法從零開始pythonleetcode演算法python
LC 移動零
題目
題目連結
給定一個數組 nums,編寫一個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。
示例:
輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]
說明:
- 必須在原陣列上操作,不能拷貝額外的陣列。 儘量減少操作次數。
- 儘量減少操作次數。
解題:
方法一:雙指標(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
這樣子執行時間少,但是佔用記憶體大