給定乙個包含紅色、白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色、白色、藍色順序排列。
此題中,我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。
注意:
不能使用**庫中的排序函式來解決這道題。
示例:
輸入:[2,0,2,1,1,0]輸出:[0,0,1,1,2,2]高階:
此題用雙指標來解決,定義red指標,指示的是發現下乙個0交換的位置,定義blue指標,指示的是發現下乙個2交換的位置。red初始值為0,blue初始值在陣列末尾。然後定義指標i從頭開始遍歷陣列,當遇到的數是0時,與red指的數交換,然後將red++,i++。如果從開始到i一直遇到的都是0,則交換沒有作用,如果遇到過1,或者遇到2後交換回來過1,那麼後面遍歷時再遇到0,則交換過來的一定是1,所以可以直接i++。如果遇到的數是1時,則i++。遇過遇到的數是2時,與blue指的數交換,然後blue--,但是i不動,等待接下來判斷交換過來的數是什麼。最後當i大於blue時跳出迴圈並返回。
class solution
else if(nums[i] == 2)
else
i++;
}return;
}};
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,...