# [LeetCode] 378. Kth Smallest Element in a Sorted Matrix

## 题目描述

Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth smallest element in the matrix.

Note that it is the kth smallest element in the sorted order, not the kth distinct element.

Example:

matrix = [
[ 1,  5,  9],
[10, 11, 13],
[12, 13, 15]
],
k = 8,

return 13.

Note:
You may assume k is always valid, 1 ≤ k ≤ n2.

## C++ 实现

class Solution {
public:
int kthSmallest(vector<vector<int>>& matrix, int k) {
const size_t m = matrix.size();
if (matrix.empty()) return -1;
const size_t n = matrix[0].size();

struct Node
{
size_t x;
size_t y;
int val;

bool operator < (const Node& other) const
{
return val >= other.val;
}
};

priority_queue<Node> pq;
for (size_t j = 0; j < n; j++)
{
pq.push({0, j, matrix[0][j]});
}

for (int i = 0; i < k - 1; i++)
{
const Node& top = pq.top();
const size_t x = top.x;
const size_t y = top.y;
pq.pop();
if (x == m - 1)
{
continue;
}
pq.push({x + 1, y, matrix[x + 1][y]});
}
return pq.top().val;
}
};
• 点赞
• 评论
• 分享
x

海报分享

扫一扫，分享海报

• 收藏
• 手机看

分享到微信朋友圈

x

扫一扫，手机阅读

• 打赏

打赏

carbon06

你的鼓励将是我创作的最大动力

C币 余额
2C币 4C币 6C币 10C币 20C币 50C币
• 一键三连

点赞Mark关注该博主, 随时了解TA的最新博文

03-24 791
10-07 905