【面試題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型數字能夠表達的範圍,從而導致數字溢出。我們可以用字符串表示數字,這樣就能簡捷的解決大數問題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章