題解是雙指標,但其實單指標就足夠了。每次遍歷把零元素存起來,這樣交換後交換的零元素也在後面,一次遍歷就可以結束。
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 思路 ...