74、搜索二维矩阵

题目:

解答:

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

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

如果出现upper越界,也就是down指向最后一行,只能说明matrix[m][0]>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)

相关推荐
汉克老师6 分钟前
GESP2025年3月认证C++五级( 第三部分编程题(2、原根判断))
c++·算法·模运算·gesp5级·gesp五级·原根·分解质因数
数据皮皮侠27 分钟前
上市公司创新韧性数据(2000-2024)|顶刊同款 EIR 指数
大数据·人工智能·算法·智慧城市·制造
WL_Aurora30 分钟前
Python 算法基础篇之链表
python·算法·链表
科研前沿38 分钟前
纯视觉无感解算 + 动态数字孪生:室内外无感定位技术全新升级
大数据·人工智能·算法·重构·空间计算
Wadli1 小时前
26.单调栈
算法
晨曦夜月1 小时前
进程的五大状态及特殊进程解析
linux·服务器·算法
吟安安安安1 小时前
适合短期冲刺的学习工作流(针对算法)
学习·算法
科研前沿1 小时前
什么是时空融合技术?
大数据·人工智能·数码相机·算法·重构·空间计算
AI科技星2 小时前
全域数学本源公理:0、1、∞ 三者核心关系 (典籍定稿版)
人工智能·算法·数学建模·数据挖掘·量子计算
AI科技星2 小时前
全域数学·第卷:场计算机卷(场空间计算机)【乖乖数学】
java·开发语言·人工智能·算法·机器学习·数学建模·数据挖掘