【刷题] LeetCode 75ソート色

請求

三つの要素の配列をソートするための唯一の0,1,2

思考

方法1:(2回トラバース)補助アレイ三の要素数を保持し、アレイを横断し、その後書き込み

方法2:アナログ三方高速行は、再度配列決定されてトラバース

 

実現

方法1

1  空隙 sortColors(ベクトル< INT >&NUMS){
 2      INTの数[ 3 ] = { 0 }。
3      INTは iは= 0 ; I <nums.sizeを(); I ++ ){
 4          アサート(NUM [I]> = 0 && NUMS [I] <= 2 )。
5          カウント数[NUMS [I]] ++ ;
6      }
 7              
8      int型のインデックス= 0 9      INTは iは= 0 ; I <回数[ 0]; I ++ ){
 10          NUMS [インデックス++] = 0 ;
11      のためにINTは iは= 0 ; I <カウント[ 1 ]; I ++ ){
 12          NUMS [インデックス++] = 1 13      のためにINTは iは= 0 ; I <カウント[ 2 ]; I ++ ){
 14          NUMS [インデックス++] = 2 ;
15      }
 16 }
コードの表示

方法2

1  空隙 sortColors1(ベクトル< INT >&NUMS){
 2      INTゼロ= - 1 3      INT 2 = nums.size()。
4      のためのINT iが= 0 ; I < 2であり;){
 5          であれば(NUMS [I] == 1 6              I ++ 7          それ以外 なら(NUMS [I] == 2 ){
 8              2 - 9              スワップ(NUMS [I]、NUMS [2])。    
10          } {
 11              アサート(NUMS [I] == 0 )。
12              ゼロ++ 13              スワップ(NUMS [ゼロ]、NUMS [I])。
14              I ++ ;
15          }
 16      }
 17 }
コードの表示

同様の問題

配列内の215 K番目の最大の要素

おすすめ

転載: www.cnblogs.com/cxc1357/p/12501708.html