您的位置:首页 > 大数据 > 人工智能

373. Find K Pairs with Smallest Sums

2017-12-28 15:47 357 查看
1、题目描述

输入两个数组,和一个整数k,由第一个数组的一个元素和第二个数组的一个元素组成的pair中,返回前k个和最小的pair。

2、思路

优先队列保存pair,写比较函数pair和较大的优先。

把队列中的前k个pair当做答案。

3、代码

struct cmp{
bool operator()(pair<int,int>a,pair<int,int>b){
return a.first+a.second>b.first+b.second;
}
};
class Solution {
public:
vector<pair<int, int>> kSmallestPairs(vector<int>& nums1, vector<int>& nums2, int k) {
priority_queue<pair<int,int>,vector<pair<int,int>>,cmp>q;
vector<pair<int, int>>ans;
for(int i=0;i<nums1.size()&&i<k;i++){
for(int j=0;j<nums2.size()&&i*j<k;j++){
q.push(make_pair(nums1[i],nums2[j]));
}
}
while(k-- &&!q.empty()){
ans.push_back(q.top());
q.pop();
}
return ans;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Heap