<返回更多

算法:把数组排成最小的数

2021-04-22  小猿陪学  
加入收藏

题目:

输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。

示例:

输入: [3,30,34,5,9]

输出: "3033459"

 

思路:

将原始int数组处理成字符串数组,对字符串数组排序,排序条件:

a+b < b+a

最后把字符串数组合并成一个字符串返回。

 

代码:

class Solution {
public:
    string minNumber(vector<int>& nums) {
        vector<string> v;
        for(auto& val: nums)
        {
            v.push_back(to_string(val));   
        }

        sort(v.begin(), v.end(), [](string& a, string& b)->bool{
            return a+b < b+a;
        });

        ostringstream oss;
        for(auto& s: v)
        {
            oss<<s;
        }
        return oss.str();
    }
};
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>