C++ | Leetcode C++题解之第378题有序矩阵中第K小的元素

题目:

题解:

cpp 复制代码
class Solution {
public:
    bool check(vector<vector<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(vector<vector<int>>& matrix, int k) {
        int n = matrix.size();
        int left = matrix[0][0];
        int right = matrix[n - 1][n - 1];
        while (left < right) {
            int mid = left + ((right - left) >> 1);
            if (check(matrix, mid, k, n)) {
                right = mid;
            } else {
                left = mid + 1;
            }
        }
        return left;
    }
};
相关推荐
踩坑记录4 小时前
leetcode hot100 2.两数相加 链表 medium
leetcode·链表
qq_192779875 小时前
C++模块化编程指南
开发语言·c++·算法
代码村新手5 小时前
C++-String
开发语言·c++
历程里程碑7 小时前
滑动窗口---- 无重复字符的最长子串
java·数据结构·c++·python·算法·leetcode·django
2501_940315268 小时前
航电oj:首字母变大写
开发语言·c++·算法
lhxcc_fly8 小时前
手撕简易版的智能指针
c++·智能指针实现
TracyCoder1238 小时前
LeetCode Hot100(18/100)——160. 相交链表
算法·leetcode
浒畔居8 小时前
泛型编程与STL设计思想
开发语言·c++·算法
Fcy6488 小时前
C++ 异常详解
开发语言·c++·异常
机器视觉知识推荐、就业指导9 小时前
Qt 和 C++,是不是应该叫 Q++ 了?
开发语言·c++·qt