力扣面试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;
    }
}
相关推荐
拾光拾趣录4 小时前
基础 | HTML语义、CSS3新特性、浏览器存储、this、防抖节流、重绘回流、date排序、calc
前端·面试
文弱_书生6 小时前
为什么神经网络的权重矩阵具有低秩特性?如何理解和解释?
人工智能·神经网络·矩阵
小高0078 小时前
协商缓存和强缓存
前端·javascript·面试
码出极致9 小时前
MySQL 与 MongoDB 深度对比:从数据模型到实战场景的核心差异解析
后端·面试
码出极致9 小时前
Elasticsearch 与 Solr 核心差异深度解析:从架构到场景的实战记忆指南
后端·面试
码出极致9 小时前
RocketMQ 和 Kafka有什么区别
后端·面试
R-G-B10 小时前
【19】万集科技——万集科技嵌入式,校招 一面,二面,面试问答记录
面试·万集科技·万集科技嵌入式面试问答记录·万集科技嵌入式面试记录·万集科技嵌入式面试·万集科技嵌入式一面·万集科技嵌入式二面
独行soc10 小时前
2025年渗透测试面试题总结-15(题目+回答)
python·科技·docker·容器·面试·eureka
转转技术团队10 小时前
「快递包裹」视角详解OSI七层模型
前端·面试
martian66511 小时前
LeetCode算法领域经典入门题目之“Two Sum”问题
人工智能·算法·leetcode·医学影像