把数组排成最小的数
题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
解题思路:
我的冒泡程序:
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param numbers int整型一维数组
# @return string字符串
#
class Solution:
def PrintMinNumber(self , numbers: List[int]) -> str:
# write code here
numbers = [str(ele) for ele in numbers]
numbers = self.quick_sort(numbers)
return "".join(numbers)
def quick_sort(self, data):
if len(data) == 0:
return data
left = self.quick_sort([ele for ele in data[1:] if int(ele+data[0])<=int(data[0]+ele)])
right = self.quick_sort([ele for ele in data[1:] if int(ele+data[0])>int(data[0]+ele)])
return left + [data[0]] + right
numbers = [3,5,1,4,2]
S = Solution()
result = S.PrintMinNumber(numbers)
print(result)
以及正经八百的快排程序:
def quick_sort(self, list):
if len(list) <= 1:
return list[:]
left = (self.quick_sort([i for i in list[1:] if i <= list[0]]))
right = (self.quick_sort([i for i in list[1:] if i > list[0]]))
return left + [list[0]] + right