题目:870. 优势洗牌
class Solution {
public:
vector<int> advantageCount(vector<int>& nums1, vector<int>& nums2) {
sort(nums1.begin(),nums1.end());
int n = nums1.size();
vector<int> res(n,-1);
vector<int> numToindex(n);
iota(numToindex.begin(),numToindex.end(),0);
sort(numToindex.begin(),numToindex.end(),[&](const int i,const int j){
return nums2[i]<nums2[j];
});
sort(nums2.begin(),nums2.end());
int index1 = 0;
int index2 = 0;
int indexr = n-1;
while(index1<n){
if(nums1[index1]>nums2[index2]){
res[numToindex[index2]] = nums1[index1];
index2++;
}else{
res[numToindex[indexr--]] = nums1[index1];
}
index1++;
}
return res;
}
};