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

LeetCode 373 查找和最小的 K 对数字题解

LeetCode 373 查找和最小的 K 对数字题解

题目描述

给定两个以升序排列的整数数组 nums1 和 nums2,以及一个整数 k。定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2。请找到和最小的 k 个数对。

解题思路

最小堆优化法

  1. 初始候选集:将nums1每个元素与nums2第一个元素组合
  2. 堆维护:使用最小堆动态维护候选对
  3. 结果收集:每次取出堆顶元素后补充新的候选对

核心逻辑

  1. 堆元素结构:(sum, i, j) 存储当前和、nums1索引、nums2索引
  2. 避免重复:通过索引递增保证每个组合只处理一次
  3. 提前终止:当收集够k个结果或堆为空时停止

复杂度分析

操作时间复杂度空间复杂度
堆初始化O(klogk)O(k)
堆弹出/压入O(klogk)O(k)
总复杂度O(klogk)O(k)

测试用例

常规测试

输入:

nums1 = [1,7,11]
nums2 = [2,4,6] 
k = 3```python
# LeetCode 373 查找和最小的 K 对数字
# https://leetcode.cn/problems/find-k-pairs-with-smallest-sums/description/import heapq
from typing import Listclass Solution:def kSmallestPairs(self, nums1: List[int], nums2: List[int], k: int) -> List[List[int]]:"""解法:最小堆 + 双指针时间复杂度:O(klogk)空间复杂度:O(k)"""if not nums1 or not nums2:return []heap = []# 初始化堆:将nums1中每个元素与nums2第一个元素组合for i in range(min(len(nums1), k)):heapq.heappush(heap, (nums1[i] + nums2[0], i, 0))result = []while heap and len(result) < k:# 取出当前最小和的组合val, i, j = heapq.heappop(heap)result.append([nums1[i], nums2[j]])# 将nums2的下一个元素加入堆(如果存在)if j + 1 < len(nums2):heapq.heappush(heap, (nums1[i] + nums2[j+1], i, j+1))return resultif __name__ == "__main__":# 测试用例test1 = Solution().kSmallestPairs([1,7,11], [2,4,6], 3)  # [[1,2],[1,4],[1,6]]test2 = Solution().kSmallestPairs([1,1,2], [1,2,3], 2)   # [[1,1],[1,1]]

相关文章:

  • mysql全量、增量备份与恢复
  • 字节后端开发一面面经
  • 牛客周赛 Round 92(再现京津冀蓝桥杯???)
  • 基于亚博K210开发板——LCD显示图片测试
  • 数据结构-树(1)
  • spring中的@Lazy注解详解
  • Feed流推送之订阅推送
  • 五、框架实战:SSM整合原理和实战
  • 树莓派4 yolo 11l.pt性能优化后的版本
  • continue通过我们的开源 IDE 扩展和模型、规则、提示、文档和其他构建块中心,创建、共享和使用自定义 AI 代码助手
  • 矩阵键盘模块
  • 05_jdk8新特性
  • linux服务器免密脚本分享
  • dfs 第一次加训 详解 下
  • 【Rust泛型】Rust泛型使用详解与应用场景
  • 十四、继承与组合(Inheritance Composition)
  • 面试题解析 | C++空类的默认成员函数(附生成条件与底层原理)
  • Ollama+OpenWebUI+docker附带软件下载链接,配置流程,适合内网部署,可以多人内网使用
  • Spark目前支持的部署模式。
  • C#里WPF使用触发器实现鼠标点击响应
  • 海北州委常委、常务副州长桑本履新青海省供销社理事会主任
  • 云南一男子持刀致邻居3死1重伤案二审开庭,未当庭宣判
  • 27岁杨阳拟任苏木镇党委副职,系2020年内蒙古自治区选调生
  • 何立峰:中方坚定支持多边主义和自由贸易,支持世界贸易组织在全球经济治理中发挥更大作用
  • 中方代表团介绍中美经贸高层会谈有关情况:双方一致同意建立中美经贸磋商机制
  • 竞彩湃|热刺、曼联一周双赛不易,勒沃库森能否欢送阿隆索