搜索二维矩阵 II(java)

题目描述

编写一个高效的算法来搜索 m xn 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

代码思路:

用暴力算法:

java 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        // boolean flag = false;
        if(matrix==null ||matrix.length==0 ||target<matrix[0][0]){
            return false;
        }
        int n=matrix.length;
        int m=matrix[0].length;
       
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(matrix[i][j]==target){
                    return true;
                }else if(matrix[i][j]>target){
                    break;
                }
            }
        }
        return false;
    }
}

巧妙的方法:

这个把他看做一个二叉搜索树,其中右上角点是根节点,往下是右子树,往左是左子树。复杂度O(log(M*N))

java 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        if(matrix==null ||matrix.length==0 ||target<matrix[0][0]){
            return false;
        }
        int n=matrix.length;
        int m=matrix[0].length;
        int i = 0;
        int j = m-1;
        while(true){
            if(matrix[i][j]==target){
                return true;
            }else if(matrix[i][j]>target){
                j--;
                if(j<0){
                    return false; 
                }
            }else{
                i++;
                if(i>n-1){
                    return false;
                }
            }
        }
        
    }
}
相关推荐
Slow菜鸟6 分钟前
Codex CLI 教程(五)| AI 驱动项目从零到一:面向 Java 全栈工程师打造个人 ECC(V2版)
java·开发语言·人工智能
superior tigre10 分钟前
78 子集
算法·leetcode·深度优先·回溯
天威?*14 分钟前
bitset的数据结构用法
算法·动态规划
月落归舟15 分钟前
java基础之拷贝、单例
java·单例·拷贝
鬼蛟18 分钟前
什么是 Git
java
直奔標竿39 分钟前
SpringAI + RAG + MCP + Agent 零基础全栈实战(完结篇)| 27课完整汇总,Java开发者AI转型必看
java·开发语言·人工智能·spring boot·后端·spring
云烟成雨TD40 分钟前
Spring AI 1.x 系列【31】向量数据库:进阶使用指南
java·人工智能·spring
hoiii1871 小时前
粒子滤波跟踪系统 - 蒙特卡洛方法实现
算法
万邦科技Lafite1 小时前
京东开放API接口:item_get返回参数指南
java·前端·javascript·api·电商开放平台
曹牧1 小时前
Java:处理 HTTP 请求的 Content-Type
java·开发语言