#include<algorithm>
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
struct Node
{
Node(int val, int r, int c): val(val), r(r), c(c){
}
int val;
int r;
int c;
};
class comp{
public:
bool operator()(const Node& a, const Node& b){
return a.val > b.val;
}
};
int main(){
int k = 8;
int res = -1;
vector<vector<int>> matrix;
vector<int> r1 = { 1, 5, 9 };
vector<int> r2 = { 10, 11, 13 };
vector<int> r3 = { 12, 13, 15 };
matrix.push_back(r1);
matrix.push_back(r2);
matrix.push_back(r3);
int rows = matrix.size();
int cols = matrix[0].size();
priority_queue<Node, vector<Node>, comp >q;
vector<vector<bool>> visited;
for (int i = 0; i < matrix.size(); i++){
visited.push_back(vector<bool>(matrix[i].size(), false));
}
Node tmp(matrix[0][0], 0, 0);
q.push(tmp);
visited[0][0] = true;
int num = 0;
while (!q.empty()){
Node top = q.top();
q.pop();
num++;
res = top.val;
if (num == k){
break;
}
else{
if (top.c + 1 < cols){
q.push(Node(matrix[top.r][top.c + 1], top.r, top.c + 1));
}
if (top.r + 1 < rows){
q.push(Node(matrix[top.r + 1][top.c], top.r + 1, top.c));
}
}
}
return -1;
}
[优先队列]378. Kth Smallest Element in a Sorted Matrix
最新推荐文章于 2024-10-31 16:16:13 发布