劍指offer 把陣列排成最小的數(Python)

2021-09-26 02:40:33 字數 768 閱讀 8210

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

def strsort(list):

if len(list) <= 1:

return list

left = strsort([i for i in list[1:] if i+list[0] < list[0]+i])

right = strsort([i for i in list[1:] if i+list[0] >= list[0] + i])

return left+[list[0]]+right

m = ['3','32','321']

print(strsort(m))

普通的快排演算法

def quick_sort(list):

if len(list) < 2:

return list[:]

left = (quick_sort([i for i in list[1:] if i <= list[0]]))

right = (quick_sort([i for i in list[1:] if i > list[0]]))

return left + [list[0]] + right

m = [7,8,5,2,4,9,6,7,5,1]

res = quick_sort(m)

print(res)

劍指offer 把陣列排成最小的數

華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 10 5 題目描述 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。解析 比大小即可,不過比的時候是從從左往右比。注意到字母長度有...

劍指offer 把陣列排成最小的數

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。分析 將int型的陣列轉化為string型的陣列,再將string型的陣列排序,排序規則依據比較兩個string變數相加後的大小 注意這個cmp...

劍指offer 把陣列排成最小的數

題目 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。分析 題目要求比較整數陣列組成後的數的大小,在int及long中來處理很容易超出範圍,實際上大數問題一般放在字串中來處理。我們把陣列元素兩...