sort 定制排序规则(配合functools.cmp_to_key())
配合例题学习
题目链接:179. 最大数
题目大意:给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
注意:(1)1 <= nums.length <= 100;(2)0 <= nums[i] <= 10910^9109。
示例:
输入:nums = [10,2]
输出:"210"输入:nums = [3,30,34,5,9]
输出:"9534330"
参考代码:
class Solution:def largestNumber(self, nums: List[int]) -> str:def cmp(x,y):return 1 if x+y<y+x else -1nums = list(map(str,nums))nums.sort(key=functools.cmp_to_key(cmp))return ''.join(nums) if nums[0]!='0' else '0'
- 综合是用来 map容器,sort按照制定规则排序。
- 复杂度分析:时间上,由于是用来sort和functools,应该是二阶的,即O(n2)O(n^2)O(n2),空间上,为O(n)O(n)O(n).