Kth Largest in N Arrays
Find K-th largest element in N arrays.
Example In n=2 arrays [[9,3,2,4,7],[1,2,3,4,8]], the 3rd largest element is 7.
In n=2 arrays [[9,3,2,4,8],[1,2,3,4,2]], the 1st largest element is 9, 2nd largest element is 8, 3rd largest element is 7 and etc.
S:min heap
维护一个大小为k的最小堆,loop每个array最大的k个元素,比较当前元素于堆顶元素(k个元素中最小的),如果当前元素大于堆顶,pop堆顶,当前元素入堆。
int KthInArrays(vector<vector<int>>& arrays, int k) {
// Write your code here
int size = arrays.size();
if (size < 1) {
return 0;
}
priority_queue<int, vector<int>, greater<int>> queue;
for (int i = 0; i < size; ++i) {
sort(arrays[i].begin(), arrays[i].end());
int n = arrays[i].size();
for (int j = n - 1; j >= n - k && j >= 0; --j) {
if (queue.size() < k) {
queue.push(arrays[i][j]);
} else if (queue.top() < arrays[i][j]) {
queue.pop();
queue.push(arrays[i][j]);
}
}
}
if (queue.size() < k) {
return 0;
}
return queue.top();
}