LeetCode 75 顏色分類 283 移動零

2021-10-24 19:11:23 字數 1103 閱讀 2529

1.雙指標  75 顏色分類

這個荷蘭國旗曾經是我怎麼都看不懂,今天好像突然明白了

首先這個p0和p1的用意在於  你最終結果肯定是0000111122222這種形式的

p0 和 p1標誌著在你遍歷路上遇見的還不是0和1 的index

i則是在尋找等於0或者1的數,因為最終2的前面就是0和1

但是如果遇見0就把0放前面,遇見1就把1放前面  最後應該是0和1混雜著了 像這樣  011110011122222222,這也不行

所以加了乙個判斷,你假設你目前的順序是ok的  

本來想畫個圖,這個工具操作不太適合我   

0           1(p0)            1           2 (p1)            2           0

p0停在第乙個不是0的地方   p1停在第乙個不是1的地方  i在最後0的位置,此時是符合所有的0在所有的1 前面(遍歷過的)

如果你把nums[i]和nums[p0]換了以後,是不是把1換出去了,而此時i會向後,不會回退,

如果此時在swap(nums[i], nums[p1])後,再進行swap(nums[i], nums[p0]),是不是就解決了這個問題,把1又換回來了

2.  283 移動零

這就是顏色分類的簡化版

顏色分類是想把0和1往前移動,移動零是想把非0數字往前移

leetcode 75 顏色分類

給定乙個包含紅色 白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色 白色 藍色順序排列。此題中,我們使用整數 0 1 和 2 分別表示紅色 白色和藍色。注意 不能使用 庫中的排序函式來解決這道題。示例 輸入 2,0,2,1,1,0 輸出 0,0,1,1,2,...

leetcode75 顏色分類

給定乙個包含紅色 白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色 白色 藍色順序排列。此題中,我們使用整數 0 1 和 2 分別表示紅色 白色和藍色。注意 不能使用 庫中的排序函式來解決這道題。示例 輸入 2,0,2,1,1,0 輸出 0,0,1,1,2,...

leetcode75 顏色分類

給定乙個包含紅色 白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色 白色 藍色順序排列。此題中,我們使用整數 0 1 和 2 分別表示紅色 白色和藍色。注意 不能使用 庫中的排序函式來解決這道題。示例 輸入 2,0,2,1,1,0 輸出 0,0,1,1,2,...