把数组排成最小的数
Posted fanmu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了把数组排成最小的数相关的知识,希望对你有一定的参考价值。
问题:
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组3,32,321,则打印出这三个数字能排成的最小数字为321323。
思路:
这是个大数问题,因为最后的数字可能会溢出,所以可以用字符串来排列结果。
对于任意两个数字a,b,可对其进行排列,比较规则是 a+b 和 b+a 哪个大。由此可对输入数组进行排序,排序后的结果即最小数字。
class Solution public: static bool cmp(int a,int b) string A = "",B = ""; A += to_string(a); A += to_string(b); B += to_string(b); B += to_string(a); return A<B; string PrintMinNumber(vector<int> numbers) string res = ""; if(numbers.empty()) return res; sort(numbers.begin(),numbers.end(),cmp); for(auto i:numbers) res += to_string(i); return res; ;
以上是关于把数组排成最小的数的主要内容,如果未能解决你的问题,请参考以下文章