Leetcode 378. 有序矩阵中第 K 小的元素

题目

在这里插入图片描述
Leetcode 378. 有序矩阵中第 K 小的元素

代码(9.12 首刷看解析)

优先队列

class Solution {
    
    
public:
    int kthSmallest(vector<vector<int>>& matrix, int k) {
    
    
        int m = matrix.size(), n = matrix[0].size();
        priority_queue<vector<int>, vector<vector<int>>, greater<vector<int>>> q;
        for(int i = 0; i < m; i++)
            q.push({
    
    matrix[i][0], i, 0});
        while(!q.empty() && k) {
    
    
            k--;
            auto cur = q.top();
            q.pop();
            if(k == 0) {
    
    
                return cur[0];
            }
            int i = cur[1], j = cur[2];
            if(j+1 < n) {
    
    
                q.push({
    
    matrix[i][j+1], i, j+1});
            }
        }
        return -1;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_51322383/article/details/132824045