力扣面试150题--搜索二维矩阵

Day 82

题目描述

思路

此题其实就是二分搜索的变形,

首先将确定要查询的数位于哪一行,由于二维数组是有序的,就比较每行的第一个元素和最后一个元素,这里直接相等就返回。

最后,锁定到某一行后,就采取二分查找,找到就返回true 没找到就到终止条件,跳出循环返回false。

java 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        //先确定在哪一个行
        int row=0;
        if(matrix[0].length==1){
            while(row<matrix.length){
                if(target==matrix[row][0]){
                return true;
            }
            row++;
        }
            return false;
        }
        while(true){
            if(target>=matrix[row][0]&&target<=matrix[row][matrix[row].length-1]){
                break;
            }
            row++;
            if(row>=matrix.length){
                return false;
            }
        }
        int beg=0;
        int end=matrix[row].length-1;
        int mid;
        while(beg<end){
            if(target==matrix[row][beg]||target==matrix[row][end]){
                return true;
            }
            mid=(beg+end)/2;
            if(target==matrix[row][mid]){
                return true;
            }
            else if(target<matrix[row][mid]){
                beg=beg;
                end=mid-1;
            }
            else{
                beg=mid+1;
                end=end;
            }
        }
        return false;
    }
}
相关推荐
布列瑟农的星空14 分钟前
后台类项目如何挖掘前端技术亮点
前端·面试
吃着火锅x唱着歌2 小时前
LeetCode 2016.增量元素之间的最大差值
数据结构·算法·leetcode
F_Director2 小时前
简说Vue3 computed原理
前端·vue.js·面试
绝无仅有3 小时前
大厂面试相关文章:深入技术面试中的核心知识点
后端·面试·架构
绝无仅有3 小时前
面试文章:网络协议与redis安全,https协议,TCP三次握手,四次挥手等面试经典问题
后端·面试·架构
郝学胜-神的一滴3 小时前
计算机图形中的法线矩阵:深入理解与应用
开发语言·程序人生·线性代数·算法·机器学习·矩阵·个人开发
元亓亓亓4 小时前
LeetCode热题100--46. 全排列--中等
算法·leetcode·职场和发展
小高0074 小时前
当前端面临百万级 API 请求:从"修 CSS 的"到架构师的进化之路
前端·javascript·面试
前端老宋Running4 小时前
为什么react~Hooks只能在组件最顶层调用
前端·react.js·面试
墨染点香5 小时前
LeetCode 刷题【146. LRU 缓存】
leetcode·缓存·哈希算法