ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

373. 查找和最小的 K 对数字

2026/10/3 21:46:06 拓冰建站 浏览量
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;}
};