74. 搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵:

每行中的整数从左到右按非递减顺序排列。
每行的第一个整数大于前一行的最后一个整数。
给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。

示例 1:


输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
输出:true
示例 2

> 代码


class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        //纵向的二分
        int t = -1;
        int u = matrix.size();
        while(t + 1 != u){
            int mid = t + (u - t)/2;
            if(matrix[mid][0] == target){
                return true;
            }
            else if(matrix[mid][0] < target){
                t = mid;
            }
            else{
                u = mid;
            }
        }
        if(t == -1) return false;
        
        //横向的二分
        int l = -1;
        int r = matrix[t].size();
        while(l + 1 != r){
            int mid = l +  (r - l)/2;
            if(matrix[t][mid] == target) return true;
            else if(matrix[t][mid] < target){
                l = mid;
            }
            else{
                r = mid;
            }
        }
        if(r == matrix[t].size()) return false;

        return matrix[t][r] == target ? 1:0;
    }
};
posted @   xiazichengxi  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示
主题色彩