given an array with n objects colored red, white or blue, sort them so that objects of
the same color are adjacent, with
the colors in
the order red, white and blue.
here, we will use the integers 0, 1, and
2to represent the color red, white, and blue respectively.
note:
you are not suppose to use the library's sort function for this problem.
給定乙個陣列,元素值只有0,1,2三種值,按照這三種值進行排序
解題:
計數排序
// 時間複雜度: o(n)
// 空間複雜度: o(k), k為元素的取值範圍
// 對整個陣列遍歷了兩遍
class solution ; // 存放0,1,2三個元素的頻率
for( int i = 0 ; i < nums.size() ; i ++ )
int index = 0;
for( int i = 0 ; i < count[0] ; i ++ )
nums[index++] = 0;
for( int i = 0 ; i < count[1] ; i ++ )
nums[index++] = 1;
for( int i = 0 ; i < count[2] ; i ++ )
nums[index++] = 2;
}};
三路快排
// 時間複雜度: o(n)
// 空間複雜度: o(1)
// 對整個陣列只遍歷了一遍
class solution }}
};
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,...