题目链接:
题目描述
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。
示例 1:
输入: [10,2]
输出: 210
示例 2:
输入: [3,30,34,5,9]
输出: 9534330
说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。 特殊用例:
输入:[0,0]
输出:"0"
代码
自定义排序的比较器,然后进行排序。将排序后的列表拼接成字符串。 重点在比较器的定义。 复杂度分析 时间复杂度 O(nlogn) 空间复杂度 O(1)
class Solution {
public:
string
largestNumber(vector
<int>& nums
) {
string ret
;
if(nums
.empty()) return ret
;
sort(nums
.begin(),nums
.end(),cmp
);
for(auto s
:nums
)
ret
+= to_string(s
);
return ret
[0] == '0'?"0":ret
;
}
bool static cmp(const int a
, const int b
){
return to_string(a
) + to_string(b
) > to_string(b
)+to_string(a
);
}
};