Skip to content

Commit b3f0b00

Browse files
Sean PrashadSean Prashad
authored andcommitted
Add 373_Find_K_Pairs_with_Smallest_Sums.java
1 parent c413dad commit b3f0b00

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
class Solution {
2+
public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k) {
3+
if (nums1.length == 0 || nums2.length == 0 || k == 0) {
4+
return Collections.emptyList();
5+
}
6+
7+
List<List<Integer>> result = new ArrayList<>();
8+
PriorityQueue<int[]> pq = new PriorityQueue<>((a, b) -> (a[0] + a[1]) - (b[0] + b[1]));
9+
10+
for (int i = 0; i < nums1.length; i++) {
11+
pq.offer(new int[] { nums1[i], nums2[0], 0 });
12+
}
13+
14+
for (int i = 0; i < Math.min(nums1.length * nums2.length, k); i++) {
15+
int[] curr = pq.poll();
16+
17+
List<Integer> temp = new ArrayList<>();
18+
temp.add(curr[0]);
19+
temp.add(curr[1]);
20+
21+
result.add(temp);
22+
23+
if (curr[2] < nums2.length - 1) {
24+
int idx = curr[2] + 1;
25+
pq.offer(new int[] { curr[0], nums2[idx], idx });
26+
}
27+
}
28+
29+
return result;
30+
}
31+
}

0 commit comments

Comments
 (0)