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;
}
相关推荐
sjsjs1118 分钟前
【数据结构-单调队列】力扣1438. 绝对差不超过限制的最长连续子数组
数据结构·算法·leetcode
2401_8582861120 分钟前
122.【C语言】数据结构之快速排序(Hoare排序的优化)
c语言·开发语言·数据结构·算法·排序算法
奔跑de自由20 分钟前
C语言指针-冒泡排序之旅
c语言·算法·排序算法
猫猫的小茶馆37 分钟前
【数据结构】栈与队列(FIFO)
linux·c语言·数据结构·算法·链表
.普通人1 小时前
洛谷--前缀统计c语言
c语言·开发语言·算法
倔强的小石头_1 小时前
C 语言: scanf 函数详解
c语言·开发语言
_周游2 小时前
【C语言】_指针运算
c语言·开发语言
graceyun3 小时前
牛客网刷题 ——C语言初阶——BC117 小乐乐走台阶
c语言·开发语言
心软且酷丶5 小时前
leetcode:面试题 17.01. 不用加号的加法(python3解法)
python·算法·leetcode
Dream it possible!6 小时前
LeetCode 热题 100_将有序数组转换为二叉搜索树(42_108_简单_C++)(二叉树;递归)
c++·算法·leetcode·深度优先