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;
}
相关推荐
Tisfy5 分钟前
LeetCode 1727.重新排列后的最大子矩阵:枚举矩形底边是哪一行 + 排序
算法·leetcode·矩阵
_饭团26 分钟前
指针核心知识:5篇系统梳理2
c语言·笔记·学习·leetcode·面试·改行学it
西装没钱买1 小时前
C语言组播的使用
c语言·开发语言·udp·组播·组播绑定网卡
阿Y加油吧1 小时前
力扣打卡——盛最多水的容器、三数之和
算法·leetcode·排序算法
玛卡巴卡ldf2 小时前
【LeetCode 手撕算法】(子串) 560-和为 K 的子数组
java·数据结构·算法·leetcode
爱编码的小八嘎3 小时前
C语言完美演绎4-3
c语言
喵喵蒻葉睦3 小时前
力扣 hot100 滑动窗口最大值 单调双端队列 java 简单题解
java·数据结构·算法·leetcode·双端队列·滑动窗口·队列
样例过了就是过了4 小时前
LeetCode热题100 搜索二维矩阵
数据结构·c++·算法·leetcode·矩阵
x_xbx5 小时前
LeetCode:21. 合并两个有序链表
算法·leetcode·链表
啊哦呃咦唔鱼5 小时前
LeetCode hot100-239 滑动窗口最大值
数据结构·算法·leetcode