45 把陣列排成最小的數

2021-10-21 14:43:27 字數 1124 閱讀 1245

輸入乙個非負整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。

示例 1:

輸入:[10,2]

輸出:「102」

示例 2:

輸入:[3,30,34,5,9]

輸出:「3033459」

0 < nums.length <= 100說明:輸出結果可能非常大,所以你需要返回乙個字串而不是整數

拼接起來的數字可能會有前導0,最後結果不需要去掉前導0

假如有兩個字串ab cd,如果abcd < cdab,則拼成數字後,abcd也會小於cdab

3034,字串"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 和...