搜索二维矩阵 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;
                }
            }
        }
        
    }
}
相关推荐
黎茗Dawn3 分钟前
DDPM-KL 散度与 L2 损失
人工智能·算法·机器学习
wearegogog1234 分钟前
DEA模型MATLAB实现(CCR、BCC、超效率)
开发语言·算法·matlab
业精于勤的牙11 分钟前
浅谈:快递物流与算法的相关性(四)
算法
小马爱打代码12 分钟前
Spring AI:文生图:调用通义万相 AI 大模型
java·人工智能·spring
一水鉴天16 分钟前
专题讨论 类型理论和范畴理论之间的关系 之2 整体设计中的“闭” 解题和“位”问题 (ima.copilot)
线性代数·矩阵·mvc
ghie909016 分钟前
MATLAB自适应子空间辨识工具箱
数据结构·算法·matlab
过河卒_zh156676617 分钟前
算法备案最新通知:26年1月批备案号发放名单已锁定,发放前的复审抽审已开始
人工智能·算法·aigc·算法备案
摇滚侠17 分钟前
2025最新 SpringCloud 教程,网关功能、创建网关,笔记51、笔记52
java·笔记·spring cloud
cici1587418 分钟前
基于反向传播算法实现手写数字识别的MATLAB实现
开发语言·算法·matlab
老欧学视觉19 分钟前
0013机器学习聚类算法(无监督算法)
算法·机器学习·聚类