【劍指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 日 – 睡了個懶覺,感覺好幸福。。
写评论
很抱歉,必須登入網站才能發佈留言。