Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
53 lines (52 loc) · 1.72 KB

File metadata and controls

53 lines (52 loc) · 1.72 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.yangchd.leetcode.medium;
/**
* @author yangchd 2018/11/4
*
* 75.Sort Colors
* Given an array with n objects colored red, white or blue, sort them in-place 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 2 to represent the color red, white, and blue respectively.
*
* Note: You are not suppose to use the library's sort function for this problem.
*
* Example:
* Input: [2,0,2,1,1,0]
* Output: [0,0,1,1,2,2]
*
* Follow up:
* A rather straight forward solution is a two-pass algorithm using counting sort.
* First, iterate the array counting number of 0's, 1's, and 2's, then overwrite array with total number of 0's, then 1's and followed by 2's.
* Could you come up with a one-pass algorithm using only constant space?
*
*/
public class SortColors {
/**
* 这种有确定种类的排序,可以直接采用计数赋值的方法
*/
class Solution {
public void sortColors(int[] nums) {
int red = 0;
int white = 0;
int blue = 0;
for (int num : nums) {
if (num == 0) {
red++;
}
if (num == 1) {
white++;
}
if (num == 2) {
blue++;
}
}
for (int i = 0; i < nums.length; i++) {
if (i < red) {
nums[i] = 0;
} else if (i >= red && i < red + white) {
nums[i] = 1;
} else if (i >= red + white && i < red + white + blue) {
nums[i] = 2;
}
}
}
}
}
Morty Proxy This is a proxified and sanitized view of the page, visit original site.