378. Kth Smallest Element in a Sorted Matrix
matrix = [
[ 1, 5, 9],
[10, 11, 13],
[12, 13, 15]
],
k = 8,
return 13.// Priority queue
int kthSmallest(vector<vector<int>>& matrix, int k) {
auto cmp = [] (const vector<int>& a, const vector<int>& b) {
return a[2] > b[2];
};
priority_queue<vector<int>, vector<vector<int> >, decltype(cmp) > pq(cmp);
for (int j = 0; j < matrix[0].size(); ++j) pq.push({0, j, matrix[0][j]});
for (int i = 0; i < k - 1; ++i) {
vector<int> t = pq.top(); pq.pop();
if (t[0] == matrix.size() - 1) continue;
int row_idx = t[0] + 1;
pq.push({row_idx, t[1], matrix[row_idx][t[1]]});
}
return pq.top()[2];
}Last updated