輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為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...