题目1:
两个有序数组间相加和的TOP K问题
【题目】 给定两个有序数组arr1和arr2,再给定一个整数k,返回来自 arr1和arr2的两个数相加和最大的前k
个,两个数必须分别来自 两个数组。
【举例】 arr1=[1,2,3,4,5],arr2=[3,5,7,9,11],k=4。 返回数组[16,15,14,14]。
【要求】
时间复杂度达到O(klogk)。
class Node
{
public:
int lindex;
int rindex;
int sum;
Node(int l, int r, int s)
{
lindex = l;
rindex = r;
sum = s;
}
friend bool operator<( Node l, Node r)
{
return l.sum< r.sum;//从小到大排列
}
};
class Solution
{
public:
priority_queue<Node> m;//默认堆是大顶堆嘛
set<string> s;
vector<int> topKSum(vector<int> arr1,vector<int> arr2, int k)
{
vector<int> res;
int index = 0;
int len1 = arr1.size();
int len2 = arr2.size();
k = min(k, len1*l