力扣面试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;
    }
}
相关推荐
阿蒙Amon32 分钟前
C#每日面试题-常量和只读变量的区别
java·面试·c#
程序员小白条1 小时前
面试 Java 基础八股文十问十答第八期
java·开发语言·数据库·spring·面试·职场和发展·毕设
wen__xvn2 小时前
代码随想录算法训练营DAY14第六章 二叉树 part02
数据结构·算法·leetcode
Ka1Yan2 小时前
[数组] - 代码随想录(2-6)
数据结构·算法·leetcode
你要飞2 小时前
考研线代第四课:线性方程组
笔记·线性代数·考研·矩阵
漫随流水2 小时前
leetcode算法(104.二叉树的最大深度)
数据结构·算法·leetcode·二叉树
xlp666hub3 小时前
Linux 设备模型学习笔记(1)
面试·嵌入式
南囝coding4 小时前
CSS终于能做瀑布流了!三行代码搞定,告别JavaScript布局
前端·后端·面试
踏浪无痕4 小时前
Go 的协程是线程吗?别被"轻量级线程"骗了
后端·面试·go
恶魔泡泡糖5 小时前
51单片机矩阵按键
c语言·算法·矩阵·51单片机