輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。
示例 1:
輸入: [10,2]
輸出: 「102」
示例 2:
輸入: [3,30,34,5,9]
輸出: 「3033459」
說明:輸出結果可能非常大,所以你需要返回乙個字串而不是整數
拼接起來的數字可能會有前導 0,最後結果不需要去掉前導 0
python
class
solution
:def
minnumber
(self, nums: list[
int])-
>
str:
defsort_rule
(s1,s2)
:# 新的排序規則
if s1+s2 > s2+s1:
return
1elif s1+s2 < s2+s1:
return-1
else
:return
0
strs =
[str
(num)
for num in nums]
# 1.轉字串
strs.sort(key=functools.cmp_to_key(sort_rule)
)# 2.排序,注意制定新的排序規則
return
''.join(strs)
# 3.拼接字串
c++class
solution
public
: string minnumber
(vector<
int>
& nums)
// 排序
sort
(strs.
begin()
, strs.
end(
), cmp)
;// 拼接字串
for(
int j=
0; jsize()
; j++
)return res;}}
;
劍指offer 45 把陣列排成最小的數
輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。思路1 根據全排列,將三個數字的全排列全寫出來,然後比較大小,這種辦法在數比較多時,效率不高。思路2 先比較前兩個數字m和n排列的大小 mn和n...
劍指offer第45 把陣列排成最小的數
輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。coding utf 8 classsolution defprintminnumber self numbers write code her...
劍指Offer 45 把陣列排成最小的數
輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例 輸入陣列,列印321323。排列出所有的組合,比較出最小的,輸出。時間複雜度 o n 空間複雜度 o n 考察最小組合的形式,遵從下面的規律 1 首位小的靠前 2 首位相同,次位小的靠前 3 位數少的靠前...