leetcode 75 顏色分類

2021-10-05 22:49:56 字數 935 閱讀 7032

題目描述

給定乙個包含紅色、白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色、白色、藍色順序排列。

此題中,我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。

注意:不能使用**庫中的排序函式來解決這道題。

解題思路:初始想法就是排序就能解決了,但是題目要求需要常數空間和一趟掃瞄。

所以就想到可以使用快速排序的思想,將大於1的放左邊,小於1的放右邊就可以了。

也就是採用雙指標,左右指標,當左指標的值大於1,右指標的值小於1,交換這兩個數。

比如:[2,0,2,1,1,0] 一次排序後為[0,0,2,1,1,2]

在對右邊進行排序後:[0,0,1,1,2,2]

**

//採用快速排序的思想,將大於1的放左邊,小於1的放右邊

public

static

void

sortcolors

(int

nums)

}//再對左邊進行排序

int index = l;

r = index;

l =0;

while

(l < r)

}//對右邊進行排序

l = index;

r = nums.length-1;

while

(l < r)

} system.out.

println

(arrays.

tostring

(nums));

}

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