力扣面试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;
    }
}
相关推荐
发现一只大呆瓜6 小时前
前端性能优化:图片懒加载的三种手写方案
前端·javascript·面试
发现一只大呆瓜7 小时前
AI流式交互:SSE与WebSocket技术选型
前端·javascript·面试
园小异7 小时前
2026年技术面试完全指南:从算法到系统设计的实战突破
算法·面试·职场和发展
alphaTao9 小时前
LeetCode 每日一题 2026/2/2-2026/2/8
算法·leetcode
甄心爱学习9 小时前
【leetcode】判断平衡二叉树
python·算法·leetcode
不知名XL9 小时前
day50 单调栈
数据结构·算法·leetcode
@––––––9 小时前
力扣hot100—系列2-多维动态规划
算法·leetcode·动态规划
java1234_小锋10 小时前
Java高频面试题:BIO、NIO、AIO有什么区别?
java·面试·nio
Lee川10 小时前
🎬 从标签到屏幕:揭秘现代网页构建与适配之道
前端·面试
YuTaoShao11 小时前
【LeetCode 每日一题】1653. 使字符串平衡的最少删除次数——(解法三)DP 空间优化
算法·leetcode·职场和发展