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;
}
相关推荐
旖旎夜光15 分钟前
LeetCode 11:盛最多水的容器(双指针问题) —— 题解
数据结构·c++·算法·leetcode·双指针
一只齐刘海的猫27 分钟前
【Leetcode】乘积最大子数组
算法·leetcode·职场和发展
en.en..3 小时前
C 语言嵌入式事件驱动状态机完整教程(枚举配套)
c语言·开发语言
hold?fish:palm3 小时前
20 旋转图像
c++·算法·leetcode
Yyyyyy~3 小时前
[C语言]break和continue作业
c语言·开发语言
NoteStream3 小时前
【C语言基础】分支和循环(上)
c语言·开发语言·c++·经验分享·笔记·算法·c#
小南知更鸟4 小时前
【leetcodehot100】leetcode-hot100-20260809更新
算法·leetcode·职场和发展
VL——MOESR6 小时前
【LuoguP1967】货车运输【生成树】【倍增】
c++·算法·题解·倍增·生成树
十月的皮皮6 小时前
STM32从零到量产开发:四路继电器工业控制模块开发 -上位机 Program.cs 应用程序入口设计说明
c语言·stm32·单片机·stm32cubemx·hal库
坚持编程的菜鸟7 小时前
模拟实现memcpy
c语言·算法·模拟实现my_memcpy