題目思路輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。
0 < nums.length <= 100
(1)自定義排序規則comp(),然後呼叫內建排序函式。
(2)將int轉換成字串,再執行字串拼接操作,最後比較它們只用根據字串大小的比較規則比較即可,因為ab和ba位數相等。
c++
class
solution
private
:static
bool
comp
(string a, string b)
};
python
class
solution
:def
minnumber
(self, nums: list[
int])-
>
int:
defcomp
(a:str
, b:
str)
->
bool
: ab = a+b
ba = b+a
if abreturn-1
elif ab>ba:
return
1else
:return
0 res =
"" numstr =
for each in nums:
str(each)
) numstr.sort(key=functools.cmp_to_key(comp)
)for each in numstr:
res += each
return res
劍指offer 面試題45 把陣列排成最小的數
面試題 劍指offer 題目解答 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323 首先我們能想到最直接的辦法就是對給出的數字進行全排列,然後依次比較,選出最小的數。但是時間複雜度太大,不會通過...
劍指Offer 面試題45 把陣列排成最小的數
面試題45 把陣列排成最小的數 題目 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這3個數字能排成的最小數字321323。include include include include include include using ...
leetcode 面試題45 把陣列排成最小的數
解題思路 這道題的關鍵就在於如何重新定義排序規則,對待排序的字串x和y,如果 x y 構成的字串小於 y x 構成的字串,自然x應當排在y前面,反之亦然 class solution def minnumber self,nums list int str defcmp x,y if x y y x...