当前位置: 首页 > news >正文

day99(2.28)——leetcode面试经典150

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

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

这题其实有更快的方法,就是可以先把所有(i,0)加入初始根堆,再根据根顶元素得到根顶元素的下一个元素(i,j+1),或者在循环过程中顺带将(i+1,0)和(i,j+1)加入队列中。

这两种方法不会重复,但我写的方法会有重复,所以我创建了一个哈希来去重

题目:

题解:

class Solution { // 编码函数:将 (i, j) 映射为唯一 long // 注意:base 必须大于 j 的最大可能值 (即 nums2.length) private long encode(int i, int j, int base) { return (long) i * base + j; } public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k) { //创建小根堆 PriorityQueue<int[]> pq = new PriorityQueue<>((a, b)->a[0]-b[0]); //创建res List<List<Integer>> res = new ArrayList<>(); //这里不需要特断,因为1 <= nums1.length, nums2.length <= 10^5 //将0,0入根堆 pq.offer(new int[]{nums1[0]+nums2[0], 0, 0}); // 哈希表:存储编码后的 long 值 Set<Long> visited = new HashSet<>(); visited.add(encode(0, 0, nums2.length)); // 用列宽 nums2.length 作为基数/100000这样的大常数 while(k-->0&&pq.size()>0) { //获取当前的最小序对 int[] d = pq.poll(); int l = d[1]; int r = d[2]; Long e1 = encode(l+1, r, nums2.length); Long e2 = encode(l, r+1, nums2.length); //判断左右数组各移动一个有什么变化 //类似于bfs搜索 if(l+1<nums1.length && !visited.contains(e1)) { //加入小根堆 pq.offer(new int[]{nums1[l+1]+nums2[r], l+1, r}); //将找到的元素加入映射对象中 visited.add(e1); } if(r+1<nums2.length && !visited.contains(e2)) { //加入小根堆 pq.offer(new int[]{nums1[l]+nums2[r+1], l, r+1}); //将找到的元素加入映射对象中 visited.add(e2); } res.add(List.of(nums1[l],nums2[r])); } return res; } }
http://www.jsqmd.com/news/422034/

相关文章:

  • P3700 [CQOI2017] 小 Q 的表格 题解
  • LLM学习笔记 - yi
  • 惊!这个方法让我一秒在百度网盘下完10GB文件!!
  • 基于python的互联网+志愿服务求职招聘系统(源码+文档)
  • 滑动窗口-02-找到字符串中所有字母异位词
  • 大数据毕设项目推荐-基于Django的B站数据分析可视化系统【附源码+文档,调试定制服务】
  • 【计算机毕业设计案例】基于Hadoop+springboot的个性化饮食推荐健康饮食推荐系统的设计与实现(程序+文档+讲解+定制)
  • C#程序启动报错“System.TypeInitializationException:“The type initializer for ...”
  • 【计算机毕业设计案例】基于Django的B站数据分析可视化系统(程序+文档+讲解+定制)
  • 学习C#调用Microsoft.ML.OnnxRuntime模块读取YOLO模型信息
  • 解决java文件无法写入安卓dex文件中的问题。
  • 市面上有实力的2025板材工厂 - 品牌推荐(官方)
  • 三菱伺服编码器驱动的追剪案例:8轴运动控制下的高级同步控制与凸轮同步技术
  • Kimi K2.5的进步点
  • 女友送礼技术文档
  • flutter: getx安装及使用路由的例子
  • 初中学生文旅研学,这些机构不容错过! - 品牌测评鉴赏家
  • 市面上2026板材工厂 - 品牌推荐(官方)
  • 2026.2.28
  • 2026家长必看!国内优质亲子文旅研学机构推荐 - 品牌测评鉴赏家
  • 行业内有实力的2025板材工厂排行榜 - 品牌推荐(官方)
  • Azure DevOps Server:2026年二月补丁
  • Azure DevOps Server:2026年二月补丁(Patch 8)
  • 自托管流媒体备用服务的搭建方法--基于Navidrome+ytm的实现
  • 2026板材十大品牌推荐榜 - 品牌推荐(官方)
  • 北京大渔优惠价格
  • 2026.2.28$
  • 语文课内古诗文
  • 必修化学
  • 2025板材厂家哪个好 - 品牌推荐(官方)