给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述。
返回 A 的任意排列,使其相对于 B 的优势最大化。
示例 1:
输入:A = [2,7,11,15], B = [1,10,4,11]
输出:[2,11,7,15]
/*
贪心,要使A[i]>B[i]的数目尽量多,遍历B的时候,用最小的大于B[i]的A[i]对上
*/
class Solution {
public:
vector<int> advantageCount(vector<int>& A, vector<int>& B) {
vector<int> ans;
multiset<int> ms;
for(int i = 0;i < A.size(); i++)
ms.insert(A[i]);
for(int i = 0;i < B.size(); i++)
{
multiset<int>::iterator index = ms.upper_bound(B[i]);
if(index == ms.end())
{
multiset<int>::iterator c = ms.begin();
ans.push_back(*c);
ms.erase(c);
}
else
{
ans.push_back(*index);
ms.erase(index);
}
}
return ans;
}
};