
AcWing 58 把数组排成最小的数
发布日期:2021-05-28 16:30:46
浏览次数:33
分类:技术文章
本文共 713 字,大约阅读时间需要 2 分钟。
题目描述:
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
例如输入数组[3, 32, 321],则打印出这3个数字能排成的最小数字321323。
样例
输入:[3, 32, 321]输出:321323
注意:输出数字的格式为字符串
分析:
分析一下样例,3,32,321,最高位相同,则比较次位,次位为空,比如3,则可将次位都视为3,所以排序后相当于321,323,333这样的有序序列。但是实际操作并不需要这样,对于a和b拼接的数,我们通过比较字符串ab和ba大小就可以确定哪个在前整个数最小。比如32132 < 32321,所以可以自定义这样的cmp函数对原数组排序后再输出即可。
注意:cmp函数前面之所以用static修饰是因为,这是交互式问题,在类的内部调用,不声明为静态的话,在调用cmp时只能通过this指针来调用了。
class Solution {public: static bool cmp(int a,int b){ string x = to_string(a),y = to_string(b); return x + y < y + x; } string printMinNumber(vector & nums) { sort(nums.begin(),nums.end(),cmp); string s = ""; for(auto x : nums) s += to_string(x); return s; }};
转载地址:https://blog.csdn.net/qq_30277239/article/details/88382379 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年02月10日 10时11分49秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Oracle行转列和列转行
2019-06-30
第三篇:RIP路由!
2019-06-30
数据一致性
2019-06-30
解决Xamarin Android SDK Manager闪退问题
2019-06-30
Visual Studio找不到adb.exe错误解决
2019-06-30
Hadoop生态图谱
2019-06-30
Mysql海量数据存储和解决方案之一—分布式DB方案
2019-06-30
正向代理、透明代理、反向代理的理解示意图转载
2019-06-30
[每天一个知识点]24-编程技巧-如何简单计算分页等需要进1的除法
2019-06-30
[每日短篇] 6 - Spring Boot 的测试时配置
2019-06-30
extjs 获取from 子组件
2019-06-30
linux职业规划
2019-06-30
微信公众平台开发提示"请求url超时"
2019-06-30
keepalived+haproxy配置
2019-06-30
linux 常用查看文件命令
2019-06-30
进程间通信(1)---匿名管道与命名管道
2019-06-30
BGP选路规则,华为思科选路规则对比
2019-06-30
模版方法模式
2019-06-30
Python详解之调试:pdb
2019-06-30