搜索二维矩阵 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;
                }
            }
        }
        
    }
}
相关推荐
闲研随记2 分钟前
RL算法学习:ArgMaxRL
算法·llm·强化学习·rl
她的男孩3 分钟前
加了 @Idempotent 还是重复扣款了 3 笔:扒完 1279 行幂等 Starter,我挖出 5 个隐蔽的坑
java·后端·架构
飞Link5 分钟前
零基础:离散数据积分与 Python 实现保姆级教程
python·算法
步行cgn8 分钟前
Spring 注入内部 Bean 详解
java·spring·rpc
user_admin_god20 分钟前
第 05 篇:结构化输出 —— 让模型稳定返回 JSON
java·人工智能·spring boot·语言模型
淡海水20 分钟前
11-03-Unity-List-T-和Dictionary-TKey-TValue-的性能调优实战
算法·unity·c#·list·dictionary
土司大王24 分钟前
LeetCode hot100——394.字符串解码:Java 双栈模拟
java·算法·leetcode
邪修king26 分钟前
Re:Linux系统篇(二十五):文件系统(一):磁盘硬件底层原理:从物理结构到 CHS/LBA 寻址,搞懂硬盘数据的定位逻辑
java·linux·运维·gpt
驭渊的小故事28 分钟前
Spring Boot 注解详解01
java·前端·spring boot
泡海椒29 分钟前
jquick-pdf 超详细入门教程:Java 轻量级 HTML 模板生成 PDF 工具
java·开发语言