剑指 Offer 45. 把数组排成最小的数 - Touale Cula's Blog

题目内容

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

 

示例 1:

1
2
输入: [10,2]
输出: "102"

示例 2:

1
2
输入: [3,30,34,5,9]
输出: "3033459"

提示:

1
0 < nums.length <= 100

解法一:暴力法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
string minNumber(vector<int>& nums) {
vector<string> list;
string res;
for(auto num:nums){
list.push_back(to_string(num));
}
sort(list.begin(), list.end(), [](string& x, string& y){ return x + y < y + x; });
for(auto l:list){
res += l;
}

return res;
}
};

结果

1
2
3
4
5
6
7
8
9
10
11
12
执行用时:
8 ms
, 在所有 C++ 提交中击败了
57.04%
的用户
内存消耗:
11 MB
, 在所有 C++ 提交中击败了
62.93%
的用户
通过测试用例:
222 / 222