java数据结构与算法刷题-----LeetCode240. 搜索二维矩阵 II

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846
解题思路
  1. 法一:把整个数组遍历一遍,时间复杂度O(m*n)
  2. 法二:每一行用二分搜索,那么时间复杂度就是O(m * l o g 2 n log_2{n} log2n)
  3. 法三:利用题目条件,每一行都是升序序列,每一列也是升序序列。所以我们从左下角判断,每次剔除一行或一列,最终尝试找到目标数。时间复杂度O(m+n)
解法图解




代码:时间复杂度O(m+n).空间复杂度O(1)
java 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int m = matrix.length,n = matrix[0].length;//获取行和列的大小
        int r = m-1,c = 0;//r表示当前第几行,c表示的当前第几列。初始指向左下角
        while(r>=0 && c<n){//只要下标合理,就继续判断
            int bottomLeft = matrix[r][c];//获取左下角的元素
            if(bottomLeft == target) return true;//如果当前元素就是要找的,直接返回
            else if(bottomLeft>target) r--;//如果左下角元素比target大,说明这一行都大于目标值,判断它的上一行
            else if(bottomLeft<target) c++;//如果左下角元素比targer小,说明这一列都小于目标值,判断它右边一列
        }
        return false;//没找到返回false
    }
}
相关推荐
软件技术NINI2 分钟前
基于SpringBoot和Vue的新能源汽车销售推荐系统
java·vue.js·spring boot·后端·汽车·毕业设计·毕设
Flynn Liang32 分钟前
LangChain4j 生产级工程骨架:12 个模块 + Docker 一键启动
java·spring boot·langchain·rag·langchain4j
Severus_black1 小时前
【C++初阶】list使用及相关实现,思路顺滑流畅!
c语言·数据结构·c++·stl·list
噢,我明白了2 小时前
JAVA中的一些基础应用知识点
java·开发语言
武子康2 小时前
H3-World 为何在加载 LoRA 前,先检查导入的代码?
人工智能·深度学习·算法
SL_staff2 小时前
私有化低代码不是妥协,而是企业级数字化的自主可控主航道
java
装不满的克莱因瓶2 小时前
【SpringAI Alibaba】ReactAgent结构化输出OutputType与OutputSchema实战
java·人工智能·ai·springai·springaialibaba
秋天的怀念_David3 小时前
算法一千零一夜 · 第二十八夜 注册
java·程序人生·算法
Java码农也是农3 小时前
Spring 事务详解:@Transactional 如何生效、何时回滚、传播行为怎么选
java·spring boot·spring·事务
二本咕咕-机械转码3 小时前
FreeRTOS深入解析(八)IPC机制之FromISR详解
数据结构·单片机·链表