Binary Search:378. Kth Smallest Element in a Sorted Matrix

来源:互联网 发布:制作视频字幕软件 编辑:程序博客网 时间:2024/06/06 04:04

这道题让我们求有序矩阵中第K小的元素。我们使用一个最大堆,然后遍历数组每一个元素,将其加入堆,根据最大堆的性质,大的元素会排到最前面,然后我们看当前堆中的元素个数是否大于k,大于的话就将首元素去掉,循环结束后我们返回堆中的首元素即为所求。

class Solution {public:    int kthSmallest(vector<vector<int>>& matrix, int k) {        priority_queue<int> q;        for (int i = 0; i < matrix.size(); ++i) {            for (int j = 0; j < matrix[i].size(); ++j) {                q.emplace(matrix[i][j]);                if (q.size() > k) q.pop();            }        }        return q.top();    }};

我的方法比较笨,放到一个vector里然后一起排序。

class Solution {public:    int kthSmallest(vector<vector<int>>& matrix, int k) {        vector<int> v;        for(auto a : matrix)        {            for(auto x : a)            {                v.push_back(x);            }        }        sort(v.begin(), v.end());        return v[k-1];    }};



阅读全文
0 0