重點整理
- 如果要處理字串,可以先轉成 array 比較好處理( Python 使用
list(”string”)
)
- 兩個指針,通常是一個在前(
s=0
)一個在後(e=len(..)-1
),或是一個快一個慢 (f,s = 0,0
)
- 一快一慢時,用「當兩個指針都碰到尾端時」作為 while 條件
while p1 < len(array) and p2 < len(array)
- 一前一後時,用「當左 < 右時」作為條件 (
while l < r
)
- 先整理迴圈內,什麼情況
p1++
,什麼情況 p2++
(或--
) 把相同 +-
的抽出來一起處理
- 注意迴圈內,只能有一次
++
或 --
(或是控制好條件)否則很容易出界
Move Zeros
Input: nums = [0,1,0,3,12]
Output: [1,3,12,0,0]
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
slow = 0
fast = 0
while fast < len(nums) and slow < len(nums):
while fast < len(nums) and nums[fast] == 0:
fast += 1
if fast < len(nums):
nums[slow], nums[fast] = nums[fast], nums[slow]
slow += 1
fast += 1
Example