题目描述:
菜鸡思路:
这道题乍一看十分难受,不知道该怎么去拼凑这个小数字。但是我们可以细心地发现这道题给的标签是排序。所以,是不是意味着我们只要把最“小”的数字排在前面就可以组成最小的答案了咩?那么,怎么样才算是最“小”的数呢,我们通过找规律可以发现,最“小”的数可以由如下的方法找出:
有数字 a 和 b,可以组合成 ab 样式、ba 样式 ab < ba 则代表 a < b。
把这道题转换成排序的问题后,困难也就迎刃而解了,可以使用sort()
函数,再使用自定义的比较函数,就可以完成。
菜鸡代码:
bool sortFun(const int& x, const int& y) {
string stringX = to_string(x);
string stringY = to_string(y);
return (stringX + stringY) < (stringY + stringX);
}
class Solution {
public:
string minNumber(vector<int>& nums) {
sort(nums.begin(), nums.end(), sortFun);
string result;
for (int i : nums) {
result += to_string(i);
}
return result;
}
};