題目.
middle
這個題我一時間懵逼,但是思路是對的,就是假設有三個陣列,leftstart左邊都是0, rightstart 右邊都是2,所以我們要處理的就是中間部分,有個重要點沒想到的就是i與leftstart之間的數只有可能是1.當num[i]為0時, leftstart和i都必須前進,為2的時候只有rightstart前進。
這道題目要求只能遍歷一次,所以才搞的複雜了,其實遍歷一次並沒有提高時間或者空間效率,因為一次遍歷中增加了很多比較和交換的操作,為了演算法而演算法了。
o(n)package main
import
"fmt"
func
sortcolors
(nums [
]int
)else
if nums[i]==0
else
if nums[i]==2
}}func
main()
sortcolors
(nums)
fmt.
println
(nums)
}
o(1)
執行用時 :
0 ms
, 在所有 golang 提交中擊敗了
100.00%
的使用者記憶體消耗 :
2.1 mb
, 在所有 golang 提交中擊敗了
100.00%
的使用者
75 顏色分類
給定乙個包含紅色 白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色 白色 藍色順序排列。此題中,我們使用整數 0 1 和 2 分別表示紅色 白色和藍色。注意 不能使用 庫中的排序函式來解決這道題。示例 輸入 2,0,2,1,1,0 輸出 0,0,1,1,2,...
75 顏色分類
給定乙個包含紅色 白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色 白色 藍色順序排列。此題中,我們使用整數 0 1 和 2 分別表示紅色 白色和藍色。注意 不能使用 庫中的排序函式來解決這道題。示例 輸入 2,0,2,1,1,0 輸出 0,0,1,1,2,...
75 顏色分類
給定乙個包含紅色 白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色 白色 藍色順序排列。此題中,我們使用整數 0 1 和 2 分別表示紅色 白色和藍色。注意 不能使用 庫中的排序函式來解決這道題。示例 輸入 2,0,2,1,1,0 輸出 0,0,1,1,2,...