最大数
目录
最大数
题目:
https://leetcode-cn.com/problems/largest-number/
思路:
一开始直接暴力搜索,把所有的情况都列举然后比较,结果超时了,最后利用了自定义排序的方法
代码:
class Solution:
def largestNumber(self, nums: List[int]) -> str:
class Comapre(str):
def __lt__(self,other):
return int(self+other) > int(other+self)
=Comapre)
nums.sort(keyreturn str(int(''.join(map(str,nums))))
注意的是这里利用了自定义的比较类型,继承了str,也可以从functools里导入cmp_to_key方法来实现比较
python3之后不支持cmp,所用key函数并不直接比较任意两个原始元素,而是通过key函数把那些元素转换成一个个新的可比较对象,也就是元素的key,然后用元素的key代替元素去参与比较。如果原始元素本来就是可比较对象,比如数字、字符串,那么不考虑性能优化可以直接sort(key=lambda e: e)。不过这种基于key函数的设计倾向于每个元素的大小有个绝对标准,但有时却会出现单个元素并没有一个绝对的大小的情况,此时可以使用 functools.cmp_to_key构建基于多个元素的比较函数。