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

题目:

题解:

cpp 复制代码
bool check(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(int **matrix, int matrixSize, int *matrixColSize, int k) {
    int left = matrix[0][0];
    int right = matrix[matrixSize - 1][matrixSize - 1];
    while (left < right) {
        int mid = left + ((right - left) >> 1);
        if (check(matrix, mid, k, matrixSize)) {
            right = mid;
        } else {
            left = mid + 1;
        }
    }
    return left;
}
相关推荐
库玛西38 分钟前
C++ 运行时多态 :核心总结与原理图解
c语言·c++·笔记
橘子汽水1682 小时前
Leetcode 230,98:二叉搜索树中第K小的元素,验证二叉搜索树
算法·leetcode·职场和发展
天空'之城2 小时前
C 语言工业级通用组件手写 21:限幅消抖滤波
c语言·嵌入式算法·工业级组件·限幅消抖滤波
Aurorar0rua2 小时前
CS50 x 2024 Notes Algorithms - 07
c语言·开发语言·学习方法
神罚天下ET3 小时前
典型arm位单片机启动流程(从上电到main.c)
c语言·arm开发·单片机
普通攻击往后拉5 小时前
Leetcode 448. 找到所有数组中消失的数字
算法·leetcode·职场和发展
mifengxing5 小时前
LeetCode 189 轮转数组|3种解法拆解,从暴力到O(1)原地最优解
数据结构·算法·leetcode
noipp6 小时前
推荐题目:洛谷 P3726 [AHOI2017/HNOI2017] 抛硬币
c语言·数据结构·c++·算法·编程·洛谷·luogu
c238566 小时前
C/C++每日一练14
c语言·c++·算法
程序员-珍6 小时前
力扣 877. 石子游戏
算法·leetcode·游戏