74、搜索二维矩阵

题目:

解答:

两次二分查找即可。如果出现down=-1,说明matrix00<target 那么所有数都小于target,return false即可。

第一次闭区间查找,最后upper=down+1,在down这一行查找即可。

如果出现upper越界,也就是down指向最后一行,只能说明matrixm0>target,并不能说明最后一行所有数都大于target

第二次二分查找,如果没找到,循环结束后return false,否则找到时return true。

cpp 复制代码
class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int m = matrix.size();
        int n = matrix[0].size();
        int upper = 0,down = m-1,left=0,right=n-1;
        while(upper<=down){
            int mid = upper+(down-upper)/2;
            if(matrix[mid][0]==target)
                return true;
            else if(matrix[mid][0]<target)
                upper = mid + 1;
            else
                down = mid - 1;
        }
        if(down == -1) return false;

        while(left<=right){
            int mid = left+(right-left)/2;
            if(matrix[down][mid]==target)
                return true;
            else if(matrix[down][mid]<target)
                left=mid+1;
            else 
                right=mid-1;
        }
        return false;
    }
};

时间复杂度O(log(mn))

空间复杂度O(1)

相关推荐
郝学胜-神的一滴2 小时前
游戏设计:原型与开发 19:U3D工位布置与性格说明书
人工智能·算法·unity·unreal engine·游戏策划·游戏设计
hahaha60163 小时前
数字图像时域滤波或者3D降噪算法FPGA实现
算法·计算机视觉·fpga开发
文丑颜不良啊3 小时前
LeetCode1541~1560题目解析
java·leetcode
YSL0701243 小时前
一文通关-----树和二叉树
数据结构·算法
青少儿编程课堂3 小时前
蓝桥杯青少组图形化+信息素养+电子学会Scratch考级:校园口算闯关解析
c++·python·算法·bfs·信息学竞赛
computersciencer3 小时前
应用贝叶斯公式:迟到了,那坐的是哪种交通工具呢?
算法·机器学习·概率论
若亦_3 小时前
排序>>交换排序
java·数据结构·算法
dialect_12 小时前
KMP算法
开发语言·c++·算法
reikocao12 小时前
卡尔曼滤波的动态机制:P如何改变融合权重
算法
漂流瓶jz12 小时前
UVA-1612 猜名次 题解答案代码 算法竞赛入门经典第二版
数据结构·算法·题解·排序·aoapc·算法竞赛入门经典