數字拼接,找出最小的數

2021-08-28 03:13:01 字數 1150 閱讀 8154

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

思路:

1. 建立新的排序規則:由 mn小於nm 得到 m小於n,即m排在n的前面得到的數比較小;

2. 將小的數字排在前面;

3. 將有序的數字拼接成字串。

# -*- coding:utf-8 -*-

class

solution:

defprintminnumber

(self, numbers):

if len(numbers)<1:

return

''else:

compare = lambda x, y: int(str(x)+str(y))-int(str(y)+str(x))

result = sorted(numbers, cmp=compare)

return

''.join(str(s) for s in result)

注意:python3.x sorted 函式沒有 cmp 引數。

python3 幫助文件:

sorted(iterable,key=none,reverse=false)

可使用from functools import cmp_to_key來實現,**如下:

# -*- coding:utf-8 -*-

from functools import cmp_to_key

class

solution:

defprintminnumber

(self, numbers):

if len(numbers) < 1:

return

''else:

compare = cmp_to_key(lambda x, y: int(str(x)+str(y))-int(str(y)+str(x)))

numbers.sorted(numbers, key=compare)

return

''.join(str(s) for s in numbers)

筆試 最小拼接數

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。思路 可以用list儲存,通過sort方法排序,排序規則就是將兩數相加所得最小的乙個放在前面,最終遍歷相加list,就能得到最小的拼接數 pub...

把陣列中的數字拼接起來組成最小的數

例如輸入陣列,則拼接起來的最小數為321323。假設有兩個數m和n,我們定義mnm,則有m n。m和n都是int範圍內的數字,它們拼接起來的數字很可能超出int所能表示的範圍。在這裡,我們把數字轉換為字串。將數字按上面定義的比較方式從小到大排序,那麼得到的組合數字最小。相關數學證明可以網上搜尋。原始...

找出丟失的數字

有一組數字,從1到n中減少了乙個數,順序也被打亂了,放在乙個n 1的陣列裡,請找出丟失的數字。1 用1 2 n 即n n 1 2 減去當前輸入資料的總和。時間複雜度為o n 空間複雜度o 1 缺點是容易溢位。緩解溢位的方法,求1 2 n的時候,邊加邊減。假如陣列為a,那麼這可以這麼計算1 a 0 2...