劍指offer 32. 把陣列排成最小的數
阿新 • • 發佈:2018-12-21
原題
題目:
輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。
Answer
思路分析
位元組轉化成排列組合做,用回溯法,得到所有的排列可能後再轉換為int,輸出最小值。
# -*- coding:utf-8 -*- class Solution: def PrintMinNumber(self, numbers): # write code here if not numbers: return "" res = [] path = "" temp = [str(x) for x in numbers] self.helper(temp, res, path) return min(res) def helper(self, numbers, res, path): if not numbers: res.append(int(path)) else: for i in range(len(numbers)): self.helper(numbers[:i]+numbers[i+1:], res, path+numbers[i])