Find K Pairs with Smallest Sums LeetCode solution in C++

1
class Solution {
2
public:
3
vector<vector<int>> kSmallestPairs(vector<int> &nums1, vector<int> &nums2, int k) {
4
priority_queue<pair<int, pair<int, int>>> pq;
5
int m = nums1.size(), n = nums2.size();
6

7
for (int i = 0; i < m; i++) {
8
for (int j = 0; j < n; j++) {
9
int sum = nums1[i] + nums2[j];
10
if (pq.size() < k) {
11
pq.push({sum, {nums1[i], nums2[j]}});
12
} else if (sum < pq.top().first) {
13
pq.pop();
14
pq.push({sum, {nums1[i], nums2[j]}});
15
} else
16
break;
17
}
18
}
19

20
vector<vector<int>> ans;
21
while (!pq.empty()) {
22
auto p = pq.top().second;
23
pq.pop();
24

25
ans.push_back({p.first, p.second});
26
}
27

28
return ans;
29
}
30
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0