LeetCode 筆記 - 283. Move Zeroes

針對 LeetCode 第 283 題,要求將數列中的所有零移動至尾端並保持非零元素的相對順序。本文解析如何運用雙指針(Two Pointers)大法,透過一個插入指標(insert_pos)動態調整非零數值的位置,達成原地修改的高效實作。

發佈
閱讀
約 1 分鐘
字數
189
⚠️ 舊文提醒:本文發佈於約 4 年前,部分內容或指令可能已過時,請斟酌參考。

題目在此 283. Move Zeroes

給一個參雜 0 的數列,請把所有 0 移動到尾端

解題思維

這題也是 Two Pointers 大法的一種應用

關鍵是 insert_pos 是把數值一個一個從前面插下來的指標
所以每交換一次才會 + 1

程式碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
if (length := len(nums)) <= 1:
return

insert_pos = 0

for i in range(length):
if nums[i] != 0:
nums[insert_pos], nums[i] = nums[i], nums[insert_pos]

insert_pos += 1

也許你也會想看看

輸入關鍵字開始搜尋 · ↑↓ 選擇 · Enter 開啟