【劍指Offer】把陣列排成最小的數 解題報告(Python)

NO IMAGE

【劍指Offer】把陣列排成最小的數 解題報告(Python)

標籤(空格分隔): 劍指Offer


題目地址:https://www.nowcoder.com/ta/coding-interviews

題目描述:

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

解題方法

見過的題,再做就知道怎麼做了,這個題的做法很巧妙,把要比較的兩個數字進行不同順序的前後拼接,進行大小比較。劍指Offer上有個證明,證明了按拼接次序進行排序得到的數字串變成str後數字是最小的。

程式碼:

# -*- coding:utf-8 -*-
# -*- coding:utf-8 -*-
class Solution:
def PrintMinNumber(self, numbers):
return "".join(map(str,sorted(numbers, cmp = lambda a, b : cmp(str(a)   str(b), str(b)   str(a)))))

Date

2018 年 3 月 21 日 – 睡了個懶覺,感覺好幸福。。