劍指 面試題45 把陣列排成最小的數

2021-10-04 21:53:03 字數 1023 閱讀 6064

題目

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

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...