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;
    }
};
相关推荐
2301_8101609512 小时前
C++中的访问者模式高级应用
开发语言·c++·算法
郝学胜-神的一滴12 小时前
走进计算机图形学的浪漫宇宙 | GAMES101 开篇课程全解析
c++·算法·图形渲染·计算机图形学
m0_5180194812 小时前
C++中的享元模式
开发语言·c++·算法
我带你来这儿就是为了告诉你我12 小时前
C++23新特性前瞻
开发语言·c++·算法
2501_9083298512 小时前
C++安全编程指南
开发语言·c++·算法
计算机安禾12 小时前
【C语言程序设计】第39篇:预处理器与宏定义
c语言·开发语言·c++·vscode·算法·visual studio code·visual studio
参.商.12 小时前
【Day43】49. 字母异位词分组
leetcode·golang
m0_5698814712 小时前
C++中的装饰器模式变体
开发语言·c++·算法
weixin_4219226913 小时前
C++与边缘计算
开发语言·c++·算法
2401_8319207413 小时前
C++编译期数组操作
开发语言·c++·算法