[刷 题] LeetCode 75 정렬 색상

주장

만 세 가지 요소의 배열을 정렬하려면 0,1,2

사고

방법 1 : 상기 어레이를 가로 질러, 보조 배열의 세 가지 요소의 수를 보유하고 (2 회 통과) 쓰기

방법 2 : 아날로그 세 방향 빠른 행은 다시 순서가되어 순회하는

 

실현

방법 1

1  공극 sortColors (벡터 < INT > & nums) {
 2      INT의 개수 [ 3 ] = { 0 };
3       ( INT가 나는 = 0 ; I <nums.size을 (); I ++ ) {
 4          어설 (NUM [I]> = 0 && nums [I] <= 2 );
5          카운트 [nums [I] ++ ;
6      }
 7              
8      INT의 인덱스 = 0 ;
9       ( INT가 나는 = 0 ; I <카운트 [ 0]; I ++ ) {
 10          nums [인덱스 ++] = 0 ;
11       ( INT가 나는 = 0 ; I <카운트 [ 1 ]; I ++ ) {
 12          nums [인덱스 ++] = 1 ;
13       ( INT가 나는 = 0 ; I <카운트 [ 2 ]; I ++ ) {
 14          nums [인덱스 ++] = 2 ;
15      }
 16 }
코드보기

방법 2

1  공극 sortColors1 (벡터 < INT > & nums) {
 2      INT 제로 = - 1 ;
3      INT 두 = nums.size ();
4       ( INT 난 = 0 ; I < 두) {
 도 5          의 경우 (nums [I] == 1 )
 6              I ++ ;
(7)          그 밖의  경우 (nums [I] == 2 ) {
 8              개의 - ;
9              스왑 (nums [I] nums [TWO]);    
10          } 다른{
 11              어설 (nums [I] == 0 );
12              제로 ++ ;
13              스왑 (nums [제로] nums [I]);
14              I ++ ;
15          }
 16      }
 17 }
코드보기

유사 문제

배열 215 K의 큰 요소

추천

출처www.cnblogs.com/cxc1357/p/12501708.html