剑指offer32:把数组排成最小的数
2024-09-05 06:21:20
1 题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
2 思路和方法
因为要拼接int数字,所以这里面涉及到int越界问题,所以题目返回string;主要是制定比较算法来对数组进行排序, return a>b;//(从大到小)return a<b;(从小到大)。例如“3”和“123”,“3123”>“1233”,所以返回false。
如果两个数字m,n拼接成mn和nm,如果mn<nm,那么m应该排在n的前面,我们定义此时m小于n,如果mn=nm,我们定义m等于n。由于mn和nm的位数一定是相同的,因此比较它们的大小只需按照字符串大小的比较规则即可。
3 C++核心代码
class Solution {
public:
static bool cmp(int a,int b)
{
string A=to_string(a)+to_string(b);
string B=to_string(b)+to_string(a);
return A<B;
}
string PrintMinNumber(vector<int> numbers) {
int len = numbers.size();
if(len==)
return "";
sort(numbers.begin(),numbers.end(),cmp);
string result="";
for(int i=;i<len;i++)
{
result+=to_string(numbers[i]);
}
return result;
}
};
参考资料
https://blog.csdn.net/sz793919425/article/details/98208092
最新文章
- CSS3 @font-face的使用
- Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解
- Android 使用Parcelable序列化对象
- 三角函数计算,Cordic 算法入门
- HDU1028Ignatius and the Princess III(母函数)
- HTTP - 基本认证
- JS 实现地区,省份,城市,县区4级联动
- win7已安装Mysql 开机自启动
- C# .NET中的 反射的应用
- PyQt通过resize改变窗体大小时ListWidget显示异常
- [JDK8]性能优化之使用LongAdder替换AtomicLong
- Unity琐碎(3) UGUI 图文混排解决方案和优化
- 前端JS Excel解析导入
- asp.net动态解析用户控件(UserControl)
- CompareTo 基于的排序算法
- chrome插件 - Manifest文件中的 background
- 媒体类型 &; 媒体查询
- 分布式的CAP理论
- python 之 决策树分类算法
- [NOI2007]货币兑换 cdq分治,斜率优化
热门文章
- 下载安装 binary editor
- ubuntu dnsmasq问题
- XMLHttpRequest Level2 新功能
- 性能分析 | Java服务器内存过高&;CPU过高问题排查
- hey is a tiny program that sends some load to a web application.
- Linux通过AIO进行异步读文件
- C++ STL copy copy_backward
- Linux-文件系统的简单操作
- 15 Flutter BottomNavigationBar自定义底部导航条 以及实现页面切换 以及模块化
- GPIO相关寄存器描述和怎么配置