LeetCode 75 解題與優化

2021-07-28 18:06:51 字數 1067 閱讀 6314

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,...