輸入乙個非負整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。
示例 1:
輸入:[10,2]示例 2:輸出:「102」
輸入:[3,30,34,5,9]輸出:「3033459」
0 < nums.length <= 100
說明:輸出結果可能非常大,所以你需要返回乙個字串而不是整數
拼接起來的數字可能會有前導0
,最後結果不需要去掉前導0
假如有兩個字串ab cd
,如果abcd < cdab
,則拼成數字後,abcd
也會小於cdab
如30
和34
,字串"3034" < "3430"
,則數字也有3034<3430
。所以本題就是自定義乙個排序規則就行了。
class
solution
//傳自定義的比較器進行排序
list.
sort
(new
comparator
()})
;//涉及字串的拼接問題,故可以先用stringbuilder存著
45 把陣列排成最小的數
輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如 輸入陣列,則列印出這三個數能排成的最小的數字321323.剛開始會想到最麻煩的方法就是全排列,然後再逐一比較找到最小的數,很明顯效率是非常低的,而且存在潛在的問題 大數問題。所以開始考慮用字串代替數字來...
排序 45題 把陣列排成最小的數
輸入乙個非負整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。示例1 輸入 10,2 輸出 102 示例2 輸入 3,30,34,5,9 輸出 3033459 根據以上規則,套用任何排序方法對nums執行排序即可。演算法流程 初始化 字串列表 strs 儲存各數字的字...
把陣列排成最小的數
分析 這是09 年6這道題其實是希望我們能找到乙個排序規則,根據這個規則排出來的陣列能排成乙個最小的數字。要確定排序規則,就得比較兩個數字,也就是給出兩個數字m 和n,我們需要確定乙個規則m 和n哪個更大,而不是僅僅只是比較這兩個數字的數值哪個更大。根據題目的要求,兩個數字m 和n排成的數字mn 和...