leetcode系列 演算法 中等 顏色分類

2021-10-04 16:56:05 字數 932 閱讀 7588

雙指標,乙個指標初始化時指向陣列頭,乙個指標指向陣列尾,具體流程如下:

變數:

left : 左指標,儲存連續0的下乙個位置

right : 右指標,儲存連續2的前乙個位置

index : 遍歷時的索引

nums : 原始陣列

流程:使用index從前向後nums

如果遇到0,則交換nums[index]和nums[left]的值,並將left、index向後移動1

如果遇到2,則交換nums[index]和nums[right]的值,注意這個時候因為nums[right]的原始值當前並未遍歷過,所以只更新right的值,向前移動1

class solution:

def sortcolors(self, nums: list[int]) -> none:

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

"""left, right = 0, len(nums) - 1

index = 0

while index <= right:

if nums[index] == 0:

nums[index], nums[left] = nums[left], nums[index]

left += 1

elif nums[index] == 2:

nums[index], nums[right] = nums[right], nums[index]

right -= 1

continue

index += 1

leetcode系列 演算法 中等 合併區間

按照第乙個數字進行排序 排序後,新增變數new list儲存遍歷結果,初始值為排序後的第一對數字 遍歷從index 1開始,每次遍歷乙個新數字對,只需要判斷第乙個數字,是否在new list最後乙個數字對中間 如果在,則合併兩對數字 如果不在,插入新數字對 class solution def me...

leetcode系列 演算法 中等 螺旋矩陣

記錄當前的迴圈次數,每迴圈一次,修改一下當前的狀態 根據當前的不同狀態,進行不同的處理遍歷方式,並將已處理的數字刪除 這樣迴圈完成一圈之後,內圈的迴圈方式,和外圈就相同了 持續迴圈到元素內的所有數字全部刪除 我設定的狀態列表如下 0 獲取當前第一行數字 1 獲取所有行的最後乙個數字 2 按照倒序獲取...

leetcode系列 演算法 中等 全排列

回溯 剪枝,大概框架為 def function if 滿足插入結果條件 插入結果集 return elif 不滿足繼續遍歷條件 比如次數等要求達到上限 return for 感覺好多回溯的題,是時候總結一下回溯的題了 class solution def permute self,nums lis...