首页 > 其他分享 >leetcode74 搜索二维矩阵

leetcode74 搜索二维矩阵

时间:2024-09-28 15:25:58浏览次数:1  
标签:return matrix leetcode74 int 矩阵 mid 二维 搜索 target

leetcode74 搜索二维矩阵

image-20240928151203169

思路

可以使用二叉搜索,首先先看标准的闭区间二叉搜索代码

public int qSearch(int[] a,int l,int r,int target){
    int mid=(l+r)/2;
    if(l>r) return l;//终止条件,区间为空
    if(a[mid]==target) return mid;
    else if(a[mid]<target) return qSearch(a,mid+1,r,target);
    else return qSearch(a,l,mid-1,target);
}

这里l>r时返回的是l,可以举例来看,a=[1,2,3,5,6],target=4

1.l=0,r=4,mid=2,a[mid]=3<4 =>

2.l=mid+1=3,r=4,mid=3,a[mid]=5>4 =>

3.l=3,r=2,mid=2此时区间长度为负,return l那就是返回大的一边也就是3,适用于插入的情况

反之如果第三行改成if(l>r) return r 那就是返回小的一边,那就是2,适用于搜索二叉矩阵

这道题的话,可以对行进行二叉搜索,找到可能出现target的行,然后遍历

代码

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int ans=searchRow(matrix,0,matrix.length-1,target);
        if(ans==-1||ans>=matrix.length) return false;
        for (int i = 0; i < matrix[0].length; i++) {
            if (matrix[ans][i]==target) return true;
        }
        return false;
    }
    public int searchRow(int[][] matrix,int l,int r,int target){
        int mid=l+(r-l)/2;
        if(l>r) return r;
        if(matrix[mid][0]==target) return mid;
        else if(matrix[mid][0]<target) return searchRow(matrix,mid+1,r,target);
        else return searchRow(matrix,l,mid-1,target);
    }
}

标签:return,matrix,leetcode74,int,矩阵,mid,二维,搜索,target
From: https://www.cnblogs.com/vastjoy/p/18437996

相关文章

  • numpy矩阵操作
    numpy官方文档:https://numpy.org/doc/stable/pipinstallnumpyimportnumpyasnp矩阵定义$$\left[\begin{matrix}1&2\3&4\end{matrix}\right]$$a=np.array([[1,2],[3,4]])reshapehttps://numpy.org/doc/stable/reference/generated/numpy.res......
  • 【电磁学,向量场理论和Maxwell方程】二维FDTD(有限差分时域)解决完全电导体边界条件问题
     ......
  • 二维数组的创建和初始化
    1.二维数组的概念按我的理解,其实二数组就是有多个一维数组组成的,多个二维数组作为元素,那就是三维数组,多个三维数组就是多维数组。2.二维数组的创建1.type arr_name[常量值1 ][常量值2 ]={};2.例如:3.intarr[3][6];4.doubledata[4][6];1.type代表类型2.arr表示数......
  • 代码随想录算法训练营第二天| 209.长度最小的子数组、59.螺旋矩阵II 、区间和、开发
    209.长度最小的子数组此题注重理解,同时我将res一开始初始化为sums的长度加一(因为不可能为此长度)INT32_MAX是一个常量,代表32位有符号整数的最大值classSolution{public:intminSubArrayLen(inttarget,vector<int>&nums){inti=0,j=0;//i为起始位置,j为......
  • 特殊矩阵范数在半定意义下(Lowner序)的最值性
    半定序我们知道对于任意两个实数\(a,b\),其必然满足以下三种关系中的一种\(a>b,或a=b,或者a<b\),这其实是一种全序关系,即任意两个实数之间都可以比较大小。但是若我们考虑矩阵的话,就不存在这种全序关系,但是我们可以刻画一种偏序关系,就如我们下文想要考察的半定关系,若矩阵\(......
  • Android 热点分享二维码功能简单介绍
    Android热点分享二维码文章目录Android热点分享二维码一、前言二、热点二维码1、热点分享的字符串2、代码中热点字符串拼接和设置示例3、一个图片示例三、其他1、Android热点分享二维码小结2、Android11设置默认热点名称和热点密码、密码长度一、前言比较新......
  • pbootcms自动生成当前页面二维码
    在PbootCMS中,生成二维码标签可以帮助用户更方便地访问特定的页面或内容。下面详细介绍如何在首页、列表页和文章内容页生成二维码标签。生成二维码标签的方法PbootCMS提供了 {pboot:qrcode}标签来生成二维码图片。这个标签可以用于生成对应文本的二维码图片,适用于各种页面,如......
  • 超全的百度AI产品矩阵:15款神器如何重塑我们的未来?
    大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300+款以上的AI应用工具。关注科技及大模型领域对社会的影响10年+。关注我一起驾驭AI工具,拥抱AI时代的到来。探秘百度AI的奇妙世界:15款神器如何重塑我们的未来?亲爱的朋友们,你们有没有想过,科技的力量究......
  • 11、稀疏矩阵的压缩存储
    1、稀疏矩阵的压缩存储定义和初始化#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<assert.h>#include<memory.h>#defineElemTypeint#defineMAXSIZE100typedefstructTriple{introw;//数据所在行intcol;//数据所在列......
  • P10681 COTS/CETS 2024 奇偶矩阵 Tablica
    P10681COTS/CETS2024奇偶矩阵Tablica来自qnqfff大佬的梦幻dp。约定二元组\((n,m)\)表示一个\(n\)行\(m\)列的矩形。不添加说明的子问题,限制与题面一致。思路先考虑放最后一行,发现你填的位置经过变换后可以得到其他的结果,也就是说只要乘上变换的方案数就可以任......