leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
0632.cpp (802B)
0 class Solution { 1 public: 2 vector<int> smallestRange(const vector<vector<int>> &nums) const { 3 using ti = tuple<int, int, int>; 4 priority_queue<ti, vector<ti>, greater<ti>> pq; 5 int maxi = -1; 6 7 for (int i = 0; i < size(nums); i++) { 8 pq.emplace(nums[i][0], i, 0); 9 maxi = max(maxi, nums[i][0]); 10 } 11 12 vector<int> res = {0, INT_MAX}; 13 while (!pq.empty()) { 14 const auto [mini, list, elem] = pq.top(); 15 pq.pop(); 16 17 if (maxi - mini < res[1] - res[0]) res = {mini, maxi}; 18 if (elem + 1 == size(nums[list])) break; 19 20 const int next = nums[list][elem + 1]; 21 pq.emplace(next, list, elem + 1); 22 maxi = max(maxi, next); 23 } 24 25 return res; 26 } 27 };