LeetCode 第 373 题:查找和最小的K对数字(C++)

news/2024/11/29 13:51:06/

373. 查找和最小的K对数字 - 力扣(LeetCode)
在这里插入图片描述

优先级队列求topK的典型题目,

先来一个暴力的排序法:

class Solution {
public:vector<vector<int>> kSmallestPairs(vector<int>& nums1, vector<int>& nums2, int k) {vector<vector<int>> sums;for(int i=0;i<nums1.size();++i){for(int j=0;j<nums2.size();++j){sums.push_back({nums1[i],nums2[j]});//将所有的可能都加进去}}sort(sums.begin(), sums.end(), [](vector<int>& l, vector<int>& r){return (l[0]+l[1] < r[0]+r[1]);});if(k > sums.size()) return sums;vector<vector<int>> res(sums.begin(), sums.begin()+k);return res;}
};

使用优先级队列求topK:

class Solution{
public:struct cmp{bool operator() (const pair<int, int> &a, const pair<int, int> &b) {return a.first + a.second < b.first + b.second; }};vector<vector<int>> kSmallestPairs(vector<int> &nums1, vector<int> &nums2, int k){int n = nums1.size(), m = nums2.size();vector<vector<int>> res; //输出结果if (n == 0 || m == 0) return res;priority_queue<pair<int, int>, vector<pair<int, int>>, cmp> q;//这儿用的是大顶堆for(int i = 0; i < n; ++i){//两层循环遍历元素for(int j = 0; j < m; ++j){if(q.size() < k)	q.push({nums1[i], nums2[j]});else if(nums1[i]+nums2[j] < q.top().first + q.top().second){//比此时队首的最大值要小,那就取而代之q.pop();q.push({nums1[i], nums2[j]});}}}while(!q.empty()){//把元素倒出来res.push_back({q.top().first, q.top().second});q.pop();}reverse(res.begin(), res.end());return res;}
};

http://www.ppmy.cn/news/825626.html

相关文章

使用373、138拓展单片机存储空间

githubpage&#xff1a;blog.alshub.xyz 在学习使用单片机的过程中了解到单片机受到其地址总线数量的限制会使得其能够外扩的存储空间有限&#xff0c;后来在学习过程中了解到使用373芯片可以暂时锁存数据&#xff0c;那么应该可以使用373来做到拓展地址总线的作用。 需要了解…

373,数据结构-6,树

想了解更多数据结构以及算法题&#xff0c;可以关注微信公众号“数据结构和算法”&#xff0c;每天一题为你精彩解答。也可以扫描下面的二维码关注 树是一个有n个有限节点组成一个具有层次关系的集合&#xff0c;每个节点有0个或者多个子节点&#xff0c;没有父节点的节点称为…

N-123基于springboot房屋租赁管理系统

开发工具&#xff1a;IDEA&#xff0c;jdk1.8 服务器&#xff1a;tomcat9.0 数据库&#xff1a;mysql5.7 前端&#xff1a;jsp、bootstrap 技术&#xff1a; springbootmybatis-plus 系统主要分前台和后台&#xff0c;分租客、房东、管理员三个角色 系统功能介绍说明&am…

中兴代工移动光猫GM620开启telnet

最近自己家也安了移动的宽带&#xff0c;型号GM620 通过下面两个链接都能开启telnet http://192.168.1.1/getpage.gch?pid1002&nextpagetele_sec_tserver_t.gch http://192.168.1.1/usrCMCCAdmin&pswaDm8H%25MdA&cmd1&telnet.gch 但是telnet密码始终找不到…

中兴代工移动光猫GM220-S开启telnet

最近老家安了移动宽带&#xff0c;替换掉了原来的移动宽带。 登录光猫后台http://192.168.1.1/ 光猫型号是GM220-S&#xff0c;版本信息如下 运营商 中国移动 设备型号 GM220-S 设备标识号 硬件版本号 HV1.0.00.168 软件版本号 V1.0.20.208 试了一下通用密码 用户名:CMCCAd…

TCP 协议(二)连接与断开

三次握手与四次挥手 在学习计算机网络之前&#xff0c;我们对于“三次握手”和“四次挥手”有所耳闻&#xff0c;其实这两个名词指的就是 TCP 连接与断开过程。 三次握手过程 三次握手是为了让客户端和服务端分别确认自己和对方接收和发送消息的能力是正常的。 一开始&#x…

vue跳转到其他页面

一、无参跳转 跳转到指定URL&#xff0c;向history栈添加一个新的纪录&#xff0c;点击后退会返回至上一个页面。 // 声明式 <router-link :to "…"> // 编程式&#xff0c;参数可以是一个字符串路径&#xff0c;或者一个描述地址的对象 <router.push(/u…

小程序处理ipnone X 底部安全区域

padding-bottom: env(safe-area-inset-bottom); 如果说 本来底部有 padding 那就加一个这个值 &#xff1a; padding-bottom: calc(25rpx constant(safe-area-inset-bottom));