Kth Smallest Element in a Sorted Matrix

题目来源
一个矩阵数组,从左到右,从上到下排好序。求第k大。
没想到怎么做。
然后看了讨论区。
用二分,每次都计算出小于等于mid的个数,

class Solution {
public:
    int kthSmallest(vector<vector<int>>& matrix, int k) {
        int n = matrix.size();
        int l = matrix[0][0], r = matrix[n-1][n-1], mid = 0;
        while (l < r) {
            mid = (l + r) / 2;
            int j = n - 1, cnt = 0;
            for (int i=0; i<n; i++) {
                while (j >= 0 && matrix[i][j] > mid)
                    j--;
                cnt += j + 1;
            }
            if (cnt < k)
                l = mid + 1;
            else
                r = mid;
        }
        return l;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容