LeetCode如何把数组排成最小的数
发表于:2024-11-12 作者:千家信息网编辑
千家信息网最后更新 2024年11月12日,这篇文章主要介绍LeetCode如何把数组排成最小的数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!题目描述输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接
千家信息网最后更新 2024年11月12日LeetCode如何把数组排成最小的数
这篇文章主要介绍LeetCode如何把数组排成最小的数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
题目描述
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
0 < nums.length <= 100 输出结果可能非常大,所以你需要返回一个字符串而不是整数 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0
题目样例
示例
输入: [10,2]
输出: "102"
输入: [3,30,34,5,9]
输出: "3033459"
题目思考
怎么定义最小?
解决方案
思路
分析题目, 要使得拼接起来的数字最小, 只有当各个拼接元素按照从小到大拼接起来才可以 而这里的从小到大拼接, 不是指按照数字本身顺序或者字典序从小到大拼接 举个例子, 90 和 902 的拼接结果应该是 90290, 但是 90 不管是数字还是字典序都小于 902 那如何定义哪个数字作为拼接后的第一个数字呢? 假如这个数字和任意其他数字拼接起来, 都小于将两个数字互换后拼接的结果, 那么显然这个数字就应该放在首位 到这里就知道了, 我们应该自定义一个排序方法, 对于两个数字 a 和 b 而言, 比较 str(a)+str(b)
与str(b)+str(a)
的大小关系, 然后对整个列表排序后组成一个字符串即可下面的代码使用两种方案实现, 一种是快速排序, 一种是语言内置排序, 供大家参考
复杂度
时间复杂度 O(NlogN)
排序的时间复杂度 空间复杂度 O(N)
使用了额外的字符串数组
代码
方案 1 - 自定义快速排序
class Solution:
def minNumber(self, nums: List[int]) -> str:
# 使用map将原数组的数字转成字符串
nums = list(map(str, nums))
def quicksort(l, r):
# 经典快速排序实现
if l >= r:
return
pivot = nums[l]
i, j = l, r
while i < j:
# 只需要把这里改成自定义的排序方法即可
while i < j and nums[j] + pivot >= pivot + nums[j]:
j -= 1
nums[i] = nums[j]
# 只需要把这里改成自定义的排序方法即可
while i < j and nums[i] + pivot <= pivot + nums[i]:
i += 1
nums[j] = nums[i]
nums[i] = pivot
quicksort(l, i - 1)
quicksort(i + 1, r)
quicksort(0, len(nums) - 1)
return ''.join(nums)
方案 2 - 自定义内置排序
class Solution:
def minNumber(self, nums: List[int]) -> str:
class compare(str):
def __lt__(self, x):
return self + x < x + self
# 使用python内置sorted的key, 传入一个重载__lt__的类, 自定义排序
return ''.join(sorted(map(str, nums), key=compare))
以上是"LeetCode如何把数组排成最小的数"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
数字
排序
数组
最小
复杂
复杂度
字符
字符串
方案
结果
题目
从小到大
从小
方法
输入
输出
两个
代码
内容
前导
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
华三服务器无raid卡
网络安全运维实习报告
分红理财产品软件开发
国泰君安的数据库叫啥
微软的云服务器能卸吗
更新数据库某字段
面向对象数据库的主要特点
互联网科技十大热点
武魂服务器
软件开发spring
杭州青呈网络技术有限公司 王鑫
mysql查看数据库表中的内容
云服务器上行带宽计费不
国太亚医互联网科技官网
护苗-网络安全教育作文
主机访问虚拟机ftp服务器
b树 b 树 数据库索引
opc 软件开发
饥荒联机版服务器mod在哪
广东网络软件开发创新服务
福州天亮网络技术
华为云服务器账号登陆
漫画软件开发的项目优势
软件开发拼音怎么写
计算机网络安全海报创意
网络安全素材儿童画
基金网络安全等级保护定级标准
安吉网络安全法
群辉jellyfin服务器视频
虚拟机如何用服务器管理器