45. 把数组排成最小的数

1. 描述

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

2. 例子

示例 1:
输入: [10,2]
输出: “102”

示例 2:
输入: [3,30,34,5,9]
输出: “3033459”

3. 限制

  • 0 < nums.length <= 100

4. 题解

n = i_nums.size()
时间复杂度: O(n)
空间复杂度: O(n)

class Solution 
{
public:
    string minNumber(vector<int> &i_nums) 
    {
        vector<string> numString(i_nums.size());
        for(int i = 0; i < i_nums.size(); i++)
            numString[i] = to_string(i_nums[i]);

        sort(numString.begin(), numString.end(), [](string &i_left, string &i_right)
            {
                return i_left + i_right < i_right + i_left;
            }
            );
        
        string minNumberString;
        for(auto num : numString)
            minNumberString += num;

        return minNumberString;
    }
};
Last updated:
Tags: 排序
comments powered by Disqus