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;
}
相关推荐
花自向阳开10245 小时前
LeetCode hot100-11
数据结构·算法·leetcode
月亮被咬碎成星星6 小时前
LeetCode[404]左叶子之和
算法·leetcode
暴力求解8 小时前
C语言---动态内存管理、柔性数组
c语言·开发语言·算法
whoarethenext8 小时前
C/C++ OpenCV 矩阵运算
c语言·c++·opencv·矩阵运算
@老蝴8 小时前
C语言 — 动态内存管理
android·c语言·开发语言
_Itachi__8 小时前
LeetCode 热题 100 208. 实现 Trie (前缀树)
算法·leetcode·职场和发展
闻闻不会编程9 小时前
74. 搜索二维矩阵 (力扣)
算法·leetcode·矩阵
凤年徐9 小时前
【数据结构初阶】顺序表的应用
c语言·开发语言·数据结构·c++·笔记·算法·顺序表
海码00710 小时前
【Hot 100】70. 爬楼梯
数据结构·c++·算法·leetcode·动态规划·hot100
C_Liu_12 小时前
C语言:字符函数和字符串函数
c语言·开发语言