179、最大数
179、给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
一、如何确定每个数字的前后顺序?
答:通过字符串之间的大小比较。两个字符串在比较大小时会逐位比较ASCII码的值,因此若两个字符串a,b进行组合后a+b>b+a那么字符串a的相对位置就应当在字符串b的前面。
二、如何将数字转化为字符串?
答:使用to_string(int number)函数,将数字转化为字符串形式(string库)
三、如何实现此种排序?
答:手写cmp函数,然后使用sort()函数对vector<string>进行排序,代码块如下:
vector<string> s; auto cmp = [](string left,string right){ return left + right > right + left; }; for(int i =0;i<n;i++){ string tem = to_string(nums[i]); s.push_back(tem); } sort(s.begin(),s.end(),cmp);
其中,cmp为手写的匿名函数,包含排序规则。

浙公网安备 33010602011771号