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;
}
相关推荐
We་ct2 分钟前
LeetCode 138. 随机链表的复制:两种最优解法详解
前端·算法·leetcode·链表·typescript
Hag_2024 分钟前
LeetCode Hot100 42.接雨水
算法·leetcode·职场和发展
老鼠只爱大米34 分钟前
LeetCode经典算法面试题 #153:寻找旋转排序数组中的最小值(暴力搜索、二分查找等五种实现方案详细解析)
算法·leetcode·二分查找·旋转数组·最小值搜索
TracyCoder1231 小时前
LeetCode Hot100(56/100)——131. 分割回文串
算法·leetcode
IvanCodes1 小时前
九、C语言动态内存管理
c语言·开发语言·算法
myron66881 小时前
基于STM32LXXX的模数转换芯片ADC(CS1237-SOP8)驱动C程序设计
c语言·stm32·嵌入式硬件
代码无bug抓狂人1 小时前
C语言之合唱队形——动态规划
c语言·开发语言·动态规划
YGGP2 小时前
【Golang】LeetCode 42. 接雨水
算法·leetcode·职场和发展
@––––––2 小时前
力扣hot100—系列7-二分查找
数据结构·算法·leetcode
鲨鱼吃橘子3 小时前
C++刷题--递归回溯剪枝(二)
开发语言·数据结构·c++·算法·leetcode·深度优先·剪枝