Skip to content

Latest commit

 

History

History
46 lines (33 loc) · 1.1 KB

把数组排成最小的数.md

File metadata and controls

46 lines (33 loc) · 1.1 KB

把数组排成最小的数

知识点:

题目描述

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

解题思路

n个数比较复杂,直接思考两个数的场景,如果只有两个数a和b,只要比较ab和ba哪个更小取哪个就行,按照这个思路只要自定义cmp函数然后使用sort函数即可。

代码

def cmp(str1, str2):
    s1 = str1 + str2
    s2 = str2 + str1
    if int(s1) < int(s2):
        return -1
    else:
        return 0


class Solution:

    def PrintMinNumber(self, numbers):
        # write code here
        if numbers is None:
            return ""
        if len(numbers) == 0:
            return ""

        strs = []
        for item in numbers:
            strs.append(str(item))

        strs.sort(cmp)
        print strs

        r = ''
        for item in strs:
            r = r + item

        return int(r)

这里