-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathsolution.cpp
29 lines (29 loc) · 952 Bytes
/
solution.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
* 32 / 32 test cases passed.
* Runtime: 236 ms
* Memory Usage: 240 MB
*/
class Solution {
private:
using pii = pair<int, int>;
public:
vector<vector<int>> kSmallestPairs(vector<int>& nums1, vector<int>& nums2, int k) {
auto cmp = [&nums1, &nums2](const pii &a, const pii &b) {
return a.first + a.second > b.first + b.second;
};
int size1 = min( (size_t)k, nums1.size() );
int size2 = min( (size_t)k, nums2.size() );
vector<vector<int>> ans;
priority_queue<pii, vector<pii>, decltype(cmp)> min_heap(cmp);
for (int i = 0; i < size1; ++ i) {
for (int j = 0; j < size2; ++ j) {
min_heap.emplace(nums1[i], nums2[j]);
}
}
for (int i = 0; i < k && !min_heap.empty(); ++ i) {
ans.push_back({min_heap.top().first, min_heap.top().second});
min_heap.pop();
}
return ans;
}
};