博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数。
阅读量:7024 次
发布时间:2019-06-28

本文共 1535 字,大约阅读时间需要 5 分钟。

文章为原创首发地址:

描述

给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数。

例给出 [1, 20, 23, 4, 8],返回组合最大的整数应为 8423201给出 [1, 201, 20, 9, 8],返回组合最大的整数应为 98202011给出 [1, 203, 20, 9, 8],返回组合最大的整数应为 98203201

算法

我给简单好理解的两个排序算法:

算法1:

先把对比的数字转成字符,拼接后再转成整数进行大小对比,即 int(a+b) 与 int(b+a) 进行降序排列。代码1。

算法2:

每个元素逐个字符进行对比。代码2。

代码1

# Python2class Solution:    def largestNumber(self, nums):        scmp = lambda a,b: int(b+a)-int(a+b)        res = ''.join(sorted(map(str, nums), cmp=scmp)).lstrip('0')        return res or '0'
# Python3 from functools import cmp_to_keyclass Solution:    def largestNumber(self, nums):        key = cmp_to_key(lambda a,b: int(b+a)-int(a+b))        res = ''.join(sorted(map(str, nums), key=key)).lstrip('0')        return res or '0'

代码2

# Python2 class Solution:    def largestNumber(self,nums):        def cxx(x,y):            i = 0             sx= str(x)            sy= str(y)            while i< len(str(min(x,y))):                if sx[i] > sy[i]:                    return 1                elif sx[i] < sy[i]:                    return -1                elif x == y:                    return 0                i+=1            if i == len(sx):                return -1 if sy[i]>sy[0] else 1            if i == len(sy):                return 1 if sx[i]>sx[0] else -1        nx = sorted(nums,cmp=lambda x,y:cxx(x,y),reverse=True)                res = ''.join(map(str, nx)).lstrip('0')        return res or '0'

测试

t = Solution()print(t.largestNumber([1, 20, 23, 4, 8]))// 8423201

以上代码已放到Hooyes的Github上开源,欢迎Fork或提建议。

运行 python largest-number.py 即可以测试。

转载地址:http://bppxl.baihongyu.com/

你可能感兴趣的文章
监控AlwaysOn可用性组的运行状态
查看>>
虚拟化基础架构Windows 2008篇之10-使用WDS安装Windows 7
查看>>
“高、纯、久”当道,量子点技术能否重构电视分水岭?
查看>>
Frost&Sullivan:2012年中国数据库安全审计与防护产品市场分析
查看>>
KingbaseES的standby搭建
查看>>
Exchange 2010 SP3正式发布提供下载
查看>>
开源跳板机(堡垒机)Jumpserver v0.2.0 部署篇
查看>>
zabbix企业应用之定时获取监控数据做报表
查看>>
微商引流推广方法殆尽,无路可走了吗?
查看>>
height、clientHeight、scrollHeight、offsetHeight区别
查看>>
TKstudio和Adobe Acrobat pro阅读部分快捷键
查看>>
python之sqlite3使用详解(转)
查看>>
Eclipse设立编辑器为绿豆沙颜色
查看>>
遍历Map的四种方法
查看>>
Python天天美味(2) - 字符遍历的艺术(转)
查看>>
getch(),getche(),getchar()的区别
查看>>
文件描述符就绪python模块介绍- select 等待I/0完成
查看>>
星号密码探测工具 - 代码远程线程注入的简单运用
查看>>
时间字符串的转换
查看>>
android sqlite
查看>>