C++ | Leetcode C++题解之第378题有序矩阵中第K小的元素

题目:

题解:

cpp 复制代码
class Solution {
public:
    bool check(vector<vector<int>>& matrix, int mid, int k, int n) {
        int i = n - 1;
        int j = 0;
        int num = 0;
        while (i >= 0 && j < n) {
            if (matrix[i][j] <= mid) {
                num += i + 1;
                j++;
            } else {
                i--;
            }
        }
        return num >= k;
    }

    int kthSmallest(vector<vector<int>>& matrix, int k) {
        int n = matrix.size();
        int left = matrix[0][0];
        int right = matrix[n - 1][n - 1];
        while (left < right) {
            int mid = left + ((right - left) >> 1);
            if (check(matrix, mid, k, n)) {
                right = mid;
            } else {
                left = mid + 1;
            }
        }
        return left;
    }
};
相关推荐
进击的荆棘14 分钟前
优选算法——分治
数据结构·算法·leetcode·分治
是娇娇公主~14 分钟前
C++ 多态机制与虚函数实现原理(补充)
c语言·c++
Yupureki16 分钟前
《实战项目-个人在线OJ平台》1.项目简介和演示
c语言·数据结构·c++·sql·算法·性能优化·html5
无敌秋18 分钟前
C++ public, private, protected类的继承
开发语言·c++
m0_5793936623 分钟前
C++代码混淆与保护
开发语言·c++·算法
qq_1481153724 分钟前
C++中的享元模式实战
开发语言·c++·算法
夜悊27 分钟前
指针、引用和常量的关系
c++
烟花巷子31 分钟前
C++中的解释器模式
开发语言·c++·算法
暮冬-  Gentle°35 分钟前
C++中的策略模式高级应用
开发语言·c++·算法
txinyu的博客37 分钟前
解析muduo源码之 HttpRequest.h
c++