373. Find K Pairs with Smallest Sums
Tags:
Medium
Skills:
Heap
June 24, 2025
04:32 AM
No headings found
Loading content...
Related Posts
Leetcode
No headings found
Related Posts
Leetcode
Problem
Bài toán yêu cầu tìm k cặp (u, v) với u thuộc nums1 và v thuộc nums2 sao cho tổng u + v là nhỏ nhất, với nums1 và nums2 đều đã được sắp xếp tăng dần
Approach
Triển khai
Solution
1function kSmallestPairs(nums1: number[], nums2: number[], k: number): number[][] {
2 const res: number[][] = []
3 if (nums1.length === 0 || nums2.length === 0 || k === 0) return res;
4 const min_heap = new MinPriorityQueue<{ sum: number, i: number, j: number }>((val) => val.sum)
5 for (let i = 0; i < Math.min(nums1.length, k); i++) min_heap.enqueue({ sum: nums1[i] + nums2[0], i, j: 0 })
6 while (res.length < k && !min_heap.isEmpty()) {
7 const { i, j } = min_heap.dequeue()
8 res.push([nums1[i], nums2[j]])
9 if (j + 1 < nums2.length) min_heap.enqueue({ sum: nums1[i] + nums2[j + 1], i, j: j + 1 })
10 }
11 return res
12};