【LeetCode】查找和最小的K对数字
LeetCode 数字 查找 最小
2023-09-14 09:13:24 时间
1.题目
2. 分析
要善于使用现有的方法和库函数。
3. 代码
import heapq # 引入最小堆
class Solution:
def kSmallestPairs(self, nums1: List[int], nums2: List[int], k: int) -> List[List[int]]:
heap = []
for i in range(len(nums2)):
a = (0,i)
cur_s = nums1[0] + nums2[i]
heapq.heappush(heap, (cur_s,a))
res = []
cnt = 0
# 遍历
while(len(heap) and cnt < k):
head = heapq.heappop(heap)
cur_s,a = head
i,j = a
print(i,j)
if i+1 < len(nums1):
heapq.heappush(heap,(nums1[i+1]+nums2[j],(i+1,j)))
cnt += 1
res.append([nums1[i],nums2[j]])
return res
相关文章
- Java实现 LeetCode 825 适龄的朋友(暴力)
- Java实现 LeetCode 747 至少是其他数字两倍的最大数(暴力)
- Java实现 LeetCode 653 两数之和 IV - 输入 BST(递归,找差值)
- Java实现 LeetCode 553 最优除法(思路问题)
- Java实现 LeetCode 522 最长特殊序列 II(查找最长的非子序列的长度)
- Java实现 LeetCode 506 相对名次
- Java实现 LeetCode 423 从英文中重建数字
- Java实现 LeetCode 374 猜数字大小 II
- Java实现 LeetCode 357 计算各个位数不同的数字个数
- Java实现 LeetCode 201 数字范围按位与
- Java实现 LeetCode 129 求根到叶子节点数字之和
- Java实现LeetCode_0007_ReverseInteger
- Java实现 LeetCode 137 只出现一次的数字
- 每日一道 LeetCode (37):两数之和 II - 输入有序数组
- (LeetCode 203)Remove Linked List Elements
- LeetCode-136. 只出现一次的数字【哈希表,位运算,排序,暴力】
- LeetCode-744. 寻找比目标字母大的最小字母【二分查找】
- Leetcode 2220. 转换数字的最少位翻转次数
- Leetcode 1295. 统计位数为偶数的数字
- [LeetCode] 96. Unique Binary Search Trees(给定一个数字n,有多少个唯一二叉搜索树) ☆☆☆
- leetcode 476. Number Complement