题目大意
给你n个正整数,把它们拼成一个最大的整数。
思路分析
贪心。不是按数字大小排,是按a+b > b+a的方式排。因为数字长度不同,直接比大小不对,比如32和3,3应该排在32前面,因为3+32=332 > 323。
复杂度分析
O(n log n),排序的复杂度。
参考代码
#include <bits/stdc++.h>
using namespace std;
bool cmp(string a,string b) {
return a+b>b+a;
}
int main(){
int n;
cin>>n;
vector<string> nums(n);
for (int i=0;i<n;i++) cin>>nums[i];
sort(nums.begin(), nums.end(),cmp);
for (string s:nums) cout<<s;
return 0;
}

京公网安备 11010502036488号