本文主要是介绍373. 查找和最小的 K 对数字,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
373. 查找和最小的 K 对数字
题目链接:373. 查找和最小的 K 对数字
代码如下:
//参考leetcode官方题解:https://leetcode.cn/problems/find-k-pairs-with-smallest-sums/solutions/1208350/cha-zhao-he-zui-xiao-de-kdui-shu-zi-by-l-z526
class Solution {
public:vector<vector<int>> kSmallestPairs(vector<int>& nums1, vector<int>& nums2, int k) {auto cmp=[&nums1,&nums2](const pair<int,int>& a,const pair<int,int>& b){return nums1[a.first]+nums2[a.second]>nums1[b.first]+nums2[b.second];};vector<vector<int>> res;//存储结果priority_queue<pair<int,int>,vector<pair<int,int>>,decltype(cmp)> pq(cmp);//大根堆,存储的是i,j数列int m=nums1.size(),n=nums2.size();for(int i=0;i<min(k,m);i++)pq.push(pair<int,int>(i,0));//把nums1的下标先保存下来,然后依次遍历nums2的下标while(k>0&&!pq.empty()){auto [x,y]=pq.top();pq.pop();res.push_back(vector<int>{nums1[x],nums2[y]});if(y+1<n)pq.push(pair<int,int>(x,y+1));k--;}return res;}
};
这篇关于373. 查找和最小的 K 对数字的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!