LeetCode-173最大数

タイトル説明

非負整数のリストを考えると、彼らは、そのような彼らは、最大数を形成することを手配する。

 

効果の対象に

非ゼロ整数配列、組成物の最大数に応じて特定の順序で番号の配列を与えられ。

 

E1

入力:[10,2] 
出力: "210"

E2

入力:[3,30,34,5,9] 
出力: "9534330"

 

問題解決のためのアイデア

簡単な方法、結果を得る横断しながら配列次いで、アレイをソートするために特定のルールに従います。

規則がある:大きな値のリターン(A + B)、及び(B + A)。

(PS:、bが文字列型です)

 

複雑性分析

時間の複雑さ:O(nlog(n))を

宇宙複雑:O(n)は、

 

コード

// サイズの比較ルール
BOOL CMP(文字 A、文字列B){
     リターン(A + B)>(B + A); 
} 

クラスソリューション{
 パブリック文字列 largestNumber(ベクトル< INT >&NUMS){ 
        ベクトル < ストリング > のSn ;
         // ストレージにint型の文字列
        のためのint型I:NUMS)
            sn.push_back(to_stringに(I)); 
        // ソート文字列配列
        のソート(sn.begin()、sn.end()、CMPを); 
        
        文字列 = ANS "" ;
        以下のためのint型私は= 0 ;私は(sn.sizeを<)I ++ 
            ANS + = Snの[I];
         // 結果ヘッド'0'を削除し
        ながら、(ans.size()=を!1つの。 && ANS [ 0 ] == ' 0 ' 
            ans.erase(01 ); 
        
        戻りANSを; 
    } 
}。

 

おすすめ

転載: www.cnblogs.com/heyn1/p/10974432.html