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;
}
相关推荐
一起养小猫36 分钟前
LeetCode100天Day9-无重复字符的最长子串与赎金信
java·开发语言·数据结构·leetcode
努力学算法的蒟蒻42 分钟前
day52(1.2)——leetcode面试经典150
算法·leetcode·面试
java修仙传1 小时前
力扣hot100:字符串解码
算法·leetcode·职场和发展
梭七y1 小时前
【力扣hot100题】(116)矩阵置零
算法·leetcode·矩阵
一路往蓝-Anbo1 小时前
STM32单线串口通讯实战(三):协议层设计 —— 帧结构、多机寻址与硬件唤醒
c语言·开发语言·stm32·单片机·嵌入式硬件·物联网
youngee111 小时前
hot100-63买卖股票的最佳时机
数据结构·算法·leetcode
Swift社区1 小时前
LeetCode 464 我能赢吗
算法·leetcode·深度优先
爱吃生蚝的于勒1 小时前
【Linux】零基础深入学习动静态库+深入学习地址
linux·运维·服务器·c语言·数据结构·c++·学习
POLITE32 小时前
Leetcode 560. 和为 K 的子数组 JavaScript (Day 5)
javascript·算法·leetcode
橘颂TA2 小时前
【剑斩OFFER】算法的暴力美学——合并 k 个升序链表
算法·leetcode·牛客·结构与算法