Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- vector<vector<int>> kSmallestPairs(vector<int>& nums1, vector<int>& nums2, int k) {
- vector<vector<int>> result;
- if (nums1.empty() || nums2.empty() || k <= 0)
- return result;
- auto comp = [&nums1, &nums2](pair<int, int> a, pair<int, int> b) {
- return nums1[a.first] + nums2[a.second] > nums1[b.first] + nums2[b.second];};
- priority_queue<pair<int, int>, vector<pair<int, int>>, decltype(comp)> min_heap(comp);
- min_heap.emplace(0, 0);
- while(k-- && min_heap.size()){
- auto idx_pair = min_heap.top(); min_heap.pop();
- result.push_back({nums1[idx_pair.first], nums2[idx_pair.second]});
- if (idx_pair.first + 1 < nums1.size())
- min_heap.emplace(idx_pair.first + 1, idx_pair.second);
- if (idx_pair.first == 0 && idx_pair.second + 1 < nums2.size())
- min_heap.emplace(idx_pair.first, idx_pair.second + 1);
- }
- return result;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement