解题思路:
使用一个最大堆遍历matrix中的数。保持最大堆中的元素数量不超过k,最后得到的堆顶元素值就是第k小的数。
class Solution {
public:
int kthSmallest(vector<vector<int>>& matrix, int k) {
priority_queue<int> pq; //使用最大堆
for(int i = 0; i < matrix.size(); i++){
for(int j = 0; j < matrix[0].size(); j++){
pq.push(matrix[i][j]);
if(pq.size() > k) pq.pop();
}
}
return pq.top();
}
};