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;
}
相关推荐
码农小韩4 分钟前
基于Linux的C++学习——动态数组容器vector
linux·c语言·开发语言·数据结构·c++·单片机·学习
有一个好名字12 分钟前
力扣-小行星碰撞
算法·leetcode·职场和发展
济61736 分钟前
嵌入式C语言(第一期)
c语言·开发语言
逑之44 分钟前
C语言笔记11:字符函数和字符串函数
c语言·笔记·算法
逑之1 小时前
C语言笔记1:C语言常见概念
c语言·笔记·c#
栈与堆1 小时前
LeetCode-1-两数之和
java·数据结构·后端·python·算法·leetcode·rust
Felven1 小时前
A. Blackslex and Password
c语言
老鱼说AI1 小时前
现代计算机系统1.2:程序的生命周期从 C/C++ 到 Rust
c语言·c++·算法
求梦8201 小时前
【力扣hot100题】反转链表(18)
算法·leetcode·职场和发展
项目題供诗2 小时前
C语言基础(二)
c语言·开发语言