***179. Largest Number

179. 最大数

给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。

示例 1:

输入: [10,2]
输出: 210
示例 2:

输入: [3,30,34,5,9]
输出: 9534330

 

思路:注意输出的是字符串

例如【3,30,34,5,9】,我们应该将其转为字符串后排序,但是仅仅这样做是不够的。例如  ‘30’>'3', 而我们的正确答案应该是:9534330 而非9534303,所以我们需要对于结果为ab的串要比较是否ab>ba。即对于a='3'和b=‘30’,因为‘330’>‘303’.所以我们采用第一种方案。

class LargerNumKey(str):
    def __lt__(x, y):         # 内置的魔法函数
        return x+y > y+x
class Solution:
    def largestNumber(self, nums: List[int]) -> str:
        s = ''.join(sorted(list(map(str,nums)), key = LargerNumKey))
        return '0' if s[0]=='0' else s
    

 

posted @ 2019-08-18 15:35  三年一梦  阅读(173)  评论(0)    收藏  举报