排序 45題 把陣列排成最小的數

2021-10-25 14:03:50 字數 832 閱讀 9285

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

示例1:

輸入: [10,2]

輸出: "102"

示例2:

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

輸出: "3033459"

根據以上規則,套用任何排序方法對nums執行排序即可。

演算法流程:

初始化: 字串列表 strs ,儲存各數字的字串格式;

列表排序: 應用以上 「排序判斷規則」 ,對 strs 執行排序;

返回值: 拼接 strs 中的所有字串,並返回。

class

solution

arrays.

sort

(strs,

(x,y)

->

(x+y)

.compareto

(y+x));

stringbuilder sb =

newstringbuilder()

;for

(int i =

0;i < strs.length;i++

)return sb.

tostring();}}

複雜度分析:

45 把陣列排成最小的數

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如 輸入陣列,則列印出這三個數能排成的最小的數字321323.剛開始會想到最麻煩的方法就是全排列,然後再逐一比較找到最小的數,很明顯效率是非常低的,而且存在潛在的問題 大數問題。所以開始考慮用字串代替數字來...

45 把陣列排成最小的數

輸入乙個非負整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。示例 1 輸入 10,2 輸出 102 示例 2 輸入 3,30,34,5,9 輸出 3033459 0 nums.length 100說明 輸出結果可能非常大,所以你需要返回乙個字串而不是整數 拼接起來的...

劍指offer45題 把陣列排成最小的數

輸入乙個非負整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。示例 1 輸入 10,2 輸出 102 示例 2 輸入 3,30,34,5,9 輸出 3033459 0 nums.length 100 首先x 3 y 30 那麼有兩種組合 x y 330 y x 303...