632. 最小区间
632. Smallest Range Covering Elements from K Lists
class Solution {
public:
vector<int> smallestRange(vector<vector<int>>& nums) {
priority_queue<vector<int>, vector<vector<int> >, greater<vector<int> > > PQ;
int max_val = INT_MIN, l = 1e-5, r = 1e5;
for(int ii = 0; ii < nums.size(); ii++) {
PQ.push({nums[ii][0], ii, 0});
max_val = max(max_val, nums[ii][0]); // 用变量保存当前最大值
}
while(1) {
auto A = PQ.top();
PQ.pop();
if(max_val - A[0] < r - l) { // 出现距离更近的点,更新
r = max_val;
l = A[0];
}
if(A[2] == nums[A[1]].size()-1) break;
PQ.push({nums[A[1]][A[2] + 1], A[1], A[2] + 1}); // 下一个数入队
max_val = max(max_val, nums[A[1]][A[2] + 1]);
}
return {l, r};
}
};