思路:在快排中定义一个新的比较函数。
class Solution {
public:
string largestNumber(vector<int>& nums) {
sort(nums.begin(), nums.end(), cmp); //这一步的cmp函数是关键
string res;
for (int i : nums) res += to_string(i); //排完序就可以直接遍历相加了
if (res[0] == '0') return "0"; //判断全为0的特殊情况
return res;
}
//此处必须加static,因为std::sort是属于全局的,无法调用非静态成员函数;
//或者将cmp函数移到当前类外部。
static bool cmp(const int& a, const int& b)
{
return to_string(a) + to_string(b) > to_string(b) + to_string(a);
}
};
因为普通成员函数都有一个默认的this指针参数, 相当于3个参数了, 所以sort要报错. static成员函数没有这个隐含参数.
多谢补充😍