AlgoMaster Logo

Find K Pairs with Smallest Sums

nums1=[1, 7, 11],nums2=[2, 4, 6],k=3
1public List<int[]> kSmallestPairs(int[] nums1, int[] nums2, int k) {
2    List<int[]> result = new ArrayList<>();
3    if (nums1.length == 0 || nums2.length == 0 || k == 0) {
4        return result;
5    }
6
7    PriorityQueue<int[]> minHeap = new PriorityQueue<>((a, b) -> (a[0] + a[1]) - (b[0] + b[1]));
8
9    // Initialize heap with first element of nums2 and elements from nums1
10    for (int i = 0; i < nums1.length && i < k; i++) {
11        minHeap.offer(new int[] { nums1[i], nums2[0], 0 });
12    }
13
14    // Extract k smallest pairs
15    while (k-- > 0 && !minHeap.isEmpty()) {
16        int[] curr = minHeap.poll();
17        result.add(new int[] { curr[0], curr[1] });
18
19        // Add next pair from same row if available
20        if (curr[2] == nums2.length - 1) {
21            continue;
22        }
23        minHeap.offer(new int[] { curr[0], nums2[curr[2] + 1], curr[2] + 1 });
24    }
25    return result;
26}
0 / 16
nums1:1711nums2:246Min-Heap:size = 0(empty)
DSA Animation | AlgoMaster.io | AlgoMaster.io