【面试题45】把数组排成最小的数

在这里插入图片描述
Python题解

class Solution:
    def PrintMinNumber(self, numbers):
        def helper(a, b):
            A = str(a)+str(b)
            B = str(b)+str(a)
            if A>B:return 1
            elif A<B:return -1
            else:return 0
        res = ""
        numbers = sorted(numbers, cmp=lambda x, y:helper(x, y))
        for n in numbers:
            res += str(n)
        return res

考点

  • 本题有两个难点;第一个难点是想出一种新的比较规则来排序一个数组;第二个难点是证明这个比较规则是有效的,并且证明根据这个规则排序之后,把数组中所有数字拼接起来得到的数字是最小的。要想解决这两个难点,要求应聘者有很强的数学功底和逻辑思维能力;
  • 考查解决大数问题的能力。两个int型的整数拼接起来得到的数字可能会超出int型数字能够表达的范围,从而导致数字溢出。我们可以用字符串表示数字,这样就能简捷的解决大数问题。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章