输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
例如输入数组 [3,32,321],则打印出这 3 个数字能排成的最小数字 321323
样例
输入:[3, 32, 321]
输出:321323
注意:输出数字的格式为字符串
分析:
自定义比较方式
因为是vector,所以排序是sort(a.begin(), a.end())。
mycmp想要放在里面,一定要加static关键字。同时返回类型是bool。
时间复杂度:
sort时间复杂度是
排列组合时间复杂度是
所以总时间复杂度是
class Solution {
public:
static bool mycmp(int a, int b) {
string as = to_string(a), bs = to_string(b);
return as+bs<bs+as;
}
string printMinNumber(vector<int>& nums) {
sort(nums.begin(), nums.end(), mycmp);
string res;
for(int x : nums) res += to_string(x);
return res;
}
};
网友评论