内容简介:第一反应是用冒泡排序,但是时间复杂度比较高,所以采用了python库函数简化代码。其实这道题就是要对比int(str(nums[i])+str(nums[i+1])) 和 int(str(nums[i+1])+str(nums[i]))究竟谁比较大,然后将较大的放在数组的前面,也就是逆序排列。 使用python中的sorted函数,使用key这个参数,用下面这个作为key,然后对key进行排序,再用reverse参数做逆序
【题目描述】
【代码思路】第一反应是用冒泡排序,但是时间复杂度比较高,所以采用了 python 库函数简化代码。其实这道题就是要对比
int(str(nums[i])+str(nums[i+1])) 和 int(str(nums[i+1])+str(nums[i]))
究竟谁比较大,然后将较大的放在数组的前面,也就是逆序排列。 使用python中的sorted函数,使用key这个参数,用下面这个作为key,然后对key进行排序,再用reverse参数做逆序
key=cmp_to_key(lambda x,y:int(x+y)-int(y+x)) 复制代码
关于cmp_to_key函数的解析见这篇文章 一句话理解cmp_to_key函数
【源代码】
调用库函数的方法: class Solution(object): def largestNumber(self, nums): """ :type nums: List[int] :rtype: str """ from functools import cmp_to_key nums=sorted([str(i) for i in nums],key=cmp_to_key(lambda x,y:int(x+y)-int(y+x)),reverse=True) if int(''.join(nums))==0:return '0' else: return ''.join(nums) 复制代码
冒泡排序: class Solution(object): def largestNumber(self, nums): """ :type nums: List[int] :rtype: str """ for i in range(len(nums)-1): for j in range(i+1,len(nums)): if int(str(nums[i])+str(nums[j]))-int(str(nums[j])+str(nums[i]))<0: temp=nums[i] nums[i]=nums[j] nums[j]=temp nums=[str(i) for i in nums] if int(''.join(nums))==0:return '0' else:return ''.join(nums) 复制代码
以上所述就是小编给大家介绍的《每日一道算法题--leetcode 179--最大数--python》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 算法精讲:分享一道值得分享的算法题
- 一道美团的笔试算法题
- 一道有意思的腾讯算法面试题
- 对一道【脉脉】上 头条 算法面试题的思考
- 异或巧用,一道令我汗颜的算法题
- 一道算法题(JS)-寻找数组中最大连续序列
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
首席产品官1 从新手到行家
车马 / 机械工业出版社 / 2018-9-25 / 79
《首席产品官》共2册,旨在为产品新人成长为产品行家,产品白领成长为产品金领,最后成长为首席产品官(CPO)提供产品认知、能力体系、成长方法三个维度的全方位指导。 作者在互联网领域从业近20年,是中国早期的互联网产品经理,曾是周鸿祎旗下“3721”的产品经理,担任CPO和CEO多年。作者将自己多年来的产品经验体系化,锤炼出了“产品人的能力杠铃模型”(简称“杠铃模型”),简洁、直观、兼容性好、实......一起来看看 《首席产品官1 从新手到行家》 这本书的介绍吧!