1,题目:
2,这道题的本质其实细看的话还是排序。
核心:只是排序的规则变了,之前的排序都是比较数值大小,现在这个规则变得不一样了。
规则:假设 string x; string y;
if(x+y>y+x) :此时x因该要放在y的后面,因为我们按照题目要求要最小的。所以我们
随便用哪一种排序方法,控制比较规则就好了。直接排序:
3,使用快排示范
此题首先暴力是过不去的,直接去模拟思路简单,但是效率不行,空间浪费严重。
//没写过感觉一定不会啊,暴力也过不去。
//核心就是要抽象出来这是一个排序,只是这是一个规则不同的排序了。但还是排序的。
class Solution {
public:
struct cmp
{
bool operator ()(int x,int y)
{
string a=to_string(x)+to_string(y);
string b=to_string(y)+to_string(x);
//想要排一个升序。
return a<b;
}
};
string minNumber(vector<int>& nums) {
//本质是一个排序题目。
//
string cur;
sort(nums.begin(),nums.end(),cmp());
for(auto& e:nums)
{
cur+=to_string(e);
}
return cur;
}
};