二分的方法解决

class Solution {
public:
    int kthSmallest(vector<vector<int>>& matrix, int k) {
        int left = matrix[0][0],right = matrix.back().back();
        while(left < right){
            int mid = left + (right - left)/2;
            int index = search(matrix,mid);
            if(index < k)
                left = mid + 1;
            else
                right = mid;
        }
        return left;
    }
    int search(vector<vector<int>>& matrix,int target){
        int i = matrix.size() - 1,j = 0,cnt = 0;
        while(i >= 0 && j < matrix[0].size()){
            if(matrix[i][j] <= target){
                j++;
                cnt += i + 1;
            }
            else
                i--;
        }
        return cnt;
    }
};

https://www.cnblogs.com/grandyang/p/5727892.html

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄