タイトル説明
非負整数のリストを考えると、彼らは、そのような彼らは、最大数を形成することを手配する。
効果の対象に
非ゼロ整数配列、組成物の最大数に応じて特定の順序で番号の配列を与えられ。
例
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(0、1 ); 戻りANSを; } }。