当前位置: 代码迷 >> 综合 >> LeetCode 378. Kth Smallest Element in a Sorted Matrix
  详细解决方案

LeetCode 378. Kth Smallest Element in a Sorted Matrix

热度:15   发布时间:2023-12-21 12:37:43.0

题目链接:https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/description/

struct point {int ary, col;explicit point(int x, int y) :ary(x), col(y) {}point operator++(int) {return point(this->ary, this->col + 1);}
};
template<class _Ty1, class _Ty2> struct MyGreater {typedef pair<_Ty1, _Ty2> type;constexpr bool operator()(const pair<_Ty1, _Ty2>& lhs, const pair<_Ty1, _Ty2>& rhs) {return lhs.first > rhs.first;}
};
class Solution {
public:int kthSmallest(vector<vector<int>>& matrix, int k) {int size = matrix.size();priority_queue<pair<int, point>,vector<pair<int, point>>,MyGreater<int, point>> pq;for (int i = 0; i < size; ++i)pq.push(make_pair(matrix[i][0], point(i, 0)));for (int i = 0; i < k - 1; ++i) {auto data = pq.top();pq.pop();if (data.second.col + 1 < size)pq.push(make_pair(matrix[data.second.ary][data.second.col + 1], data.second++));}return pq.top().first;}
};
  相关解决方案