剑指offer45.把数组排成最小的数

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个

思路:找到一个字符串数组的排序规则,利用快排的思想进行排序

class Solution(object):
    def printMinNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: str
        """
        def str_sort(list):
            if len(list) <= 1:
                return list
            left = str_sort([i for i in list[1:] if (i+list[0])<(list[0]+i)])   #定义数组比较大小的方式
            right = str_sort([i for i in list[1:] if (i+list[0])>=(list[0]+i)])
            return left + [list[0]]+right
        str_num = [str(x) for x in nums]
        str_num = str_sort(str_num)
        res = ''
        for i in range(len(str_num)):
            res = res + str_num[i]
        return res

你可能感兴趣的:(剑指offer45.把数组排成最小的数)