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;
}
相关推荐
zhangx1234_39 分钟前
C语言 数据在内存中的存储
c语言·开发语言
嵌入小生0071 小时前
双向链表、双向循环链表之间的异同---嵌入式入门---Linux
linux·c语言·数据结构·链表·嵌入式·小白
BoJerry7772 小时前
数据结构——单链表(不带头)【C】
c语言·开发语言·数据结构
进击的小头2 小时前
设计模式组合应用:智能硬件控制系统
c语言·设计模式
EmbedLinX2 小时前
FreeRTOS 学习笔记
c语言·笔记·学习
想进个大厂2 小时前
代码随想录day31 贪心05
数据结构·算法·leetcode
橘颂TA3 小时前
【剑斩OFFER】算法的暴力美学——力扣 207 题:课程表
数据结构·c++·算法·leetcode·职场和发展
学嵌入式的小杨同学3 小时前
【Linux 封神之路】文件操作 + 时间编程实战:从缓冲区到时间格式化全解析
linux·c语言·开发语言·前端·数据库·算法·ux
浪客灿心3 小时前
Linux的Ext系列文件系统
linux·运维·服务器·c语言
有一个好名字3 小时前
力扣-迷宫中离入口最近的出口
算法·leetcode·职场和发展