题解 | #最大数#
最大数
http://www.nowcoder.com/practice/fc897457408f4bbe9d3f87588f497729
- 必须转换成字符串,然后进行比较。a+ b> b+a . 利用字符串得位置互换得出结论。
- 注意处理”000“ 的输出。
class Solution {
public:
/**
* 最大数
* @param nums int整型vector
* @return string字符串
*/
string solve(vector<int>& nums) {
// write code here
if(!nums.size()) return "";
int flag = 0;
for(auto x: nums){
if(x != 0){
flag = 1;
}
}
if(flag == 0){
return "0";
}
vector<string> str;
for(auto st:nums) str.push_back(to_string(st));
sort(str.begin(),str.end(),[](string a, string b){
return a+b > b + a;//字符串组合,然后通过字符串得自身数字比较特性给出结果
});
string res="";
for(int i =0; i< str.size();i++){
res+= str[i];
}
return res;
}
};算法解析 文章被收录于专栏
这里主要是算法岗的自我思路总结