leetcode 179 最大數
阿新 • • 發佈:2019-01-23
給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。
示例 1:
輸入:[10,2]
輸出:210
示例 2:
輸入:[3,30,34,5,9]
輸出:9534330
說明: 輸出結果可能非常大,所以你需要返回一個字串而不是整數。
解題思路:
和普通的排序不一樣的是,不是比較數或者字串的大小,而是比較拼接後字串的大小。
python3實現:
from functools import cmp_to_key def largestNumber(nums): num_to_str = [str(i)for i in nums] num_to_str.sort(key=cmp_to_key(lambda a, b: (int(a + b) > int(b + a)) - (int(a + b) < int(b + a))), reverse=True) return '0' if num_to_str[0] == '0' else ''.join(num_to_str)
python3比python2少了cmp引數,用com_to_key可以完成相應的功能。
from functools import cmp_to_key
nums = [1, 3, 2, 4]
nums.sort(key=cmp_to_key(lambda a, b: a - b))
print(nums) # [1, 2, 3, 4]