题解 | 把数组排成最小的数
把数组排成最小的数
https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993
#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param numbers int整型vector
* @return string字符串
*/
string PrintMinNumber(vector<int>& numbers) {
// write code here
vector<string> ans;
for (int i = 0; i < numbers.size(); ++i) {
ans.push_back(to_string(numbers[i]));//都在string头文件
}
auto cmp = [](const string & s1, const string & s2) {
return s1 + s2 < s2 + s1;
};//局部函数隐含this指针,如果不想声明成静态用lambda
sort(ans.begin(), ans.end(), cmp);
string res;
for (int i = 0; i < ans.size(); ++i) {
//res += ans[i];//每次'+'可能触发拷贝和重新分配
res.append(ans[i]);
}
return res;
}
};
主要就是排序问题,要想清楚什么情况下这个比较是单调的(就是a<b,b<c时,有a<c)。
查看22道真题和解析
CVTE公司福利 718人发布