题解 | 把数组排成最小的数
把数组排成最小的数
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)。