leetcode 283 移動零 單指標方法

2021-10-10 15:20:47 字數 831 閱讀 8992

題解是雙指標,但其實單指標就足夠了。每次遍歷把零元素存起來,這樣交換後交換的零元素也在後面,一次遍歷就可以結束。

from collections import deque

class

solution

:def

movezeroes

(self, nums: list[

int])-

>

none

:"""

do not return anything, modify nums in-place instead.

"""zeros = deque(

)# 先找到第乙個0元素

p =0while p <

len(nums)

and nums[p]!=0

: p +=

1if p >=

len(nums)

:return

# 每次換,往deque加元素

while

true

:while p <

len(nums)

and nums[p]==0

: p +=

1# pop first zero idx

p_zero = zeros.popleft(

)if p <

len(nums)

: nums[p_zero]

, nums[p]

= nums[p]

, nums[p_zero]

else

:return

LeetCode283 移動零(簡單)

原題目給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。題目大意 將陣列所有的零移至末尾,且不改變其他數字的順序,且只能開闢常數級...

leetcode 283 移動零 快慢指標

給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。思路雙指標法。這道題目相當經典,將所有 0 移動到陣列的末尾,分為兩步,第一是將...

leetcode 283 移動零,雙指標解法

題目描述 給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。public void movezeroes int nums 思路 ...