【力扣】240.搜索二维矩阵

题目意思是从该矩阵之中查找出是否有和target一样的值,若有则返回true,无则返回false。这里我用的是java。总共有三种方法,分别是暴力解题法(能过),二分查找法(就是将二维数组拆分成m个二维数组),Z字形查找法。重点是讲Z字形查找法,因为在了解该方法之后我觉得自己像傻逼一样,笨,哈哈哈,开个玩笑。这里代码我是参考的官方。

法三:

Z字形解题法原理就是二叉树,在这里的话我们是从该二维数组的最右边(假设为matrix[x][y])开始查的。根据题目意思,我们现在规定顶点是最小的,下边的结点比上面的大,同时左边的比右边的小。回到题目本身,当目标元素比matrix[x][y]大时,此时我们应该要向下开始寻找y--,因为题目中从左至右和从上至下都是升序排列的,现在我们知道了目标元素比matrix[x][y]大时,那就不可能往左边寻找了。如果想不通那就请在想一想,加油嗷。同理,x--的情况就是目标元素比matrix[x][y]小时。

代码如下:

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        //Z字形查找
        int m=matrix.length,n=matrix[0].length;
        int x=0,y=n-1;
        while(x<m&&y>=0){
            if(matrix[x][y]==target) return true;
            else if(matrix[x][y]>target){
                y--;
            }else{
                x++;
            }
        }
        return false;
    }
}

法一和法二:

二分查找,就是嗯,很简单,看代码吧

//1、法一
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int n=matrix.length,m=matrix[0].length;
       //用for-each循环
       for(int[] row:matrix){
           for(int element:row){
               if(element==target) return true;
           }
       }
        return false;
    }
}
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        //2.二分查找法
        for(int[] row:matrix){
            int index=search(row,target);
            if(index>=0) return true;
        }
        return false;
    }
    public int search(int[] nums,int target){
        int low=0,high=nums.length-1;
        while(low<=high){
            int mid=(high-low)/2+low;
            int num=nums[mid];
            if(num==target) return mid;
            else if(num>target) high=mid-1;
            else low=mid+1;
        }
        return -1;
    }
}

生活愉快哦,祝你刷题快乐~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/224281.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NDIS协议驱动开发指南

文章目录 NDIS协议驱动开发指南1. 技术概览2. NDIS协议驱动2.1 BindAdapterHandlerEx2.2 SendNetBufferListsCompleteHandler2.3 ReceiveNetBufferListsHandler2.4 ProtocolNetPnpEvent 3. NET_BUFFER_LIST4. ndisprot实例5. 总结 NDIS协议驱动开发指南 我们知道&#xff0c;在…

三十八、AT模式

目录 一、定义 1、AT模式工作原理如下&#xff1a; 2、优点&#xff1a; 3、缺点&#xff1a; 4、流程&#xff1a; 二、AT模式与XA模式的区别 三、AT模式的脏写问题 四、实现AT模式 一、定义 AT模式是指使用AT命令进行串口通信的工作模式。AT命令是由两个字符组成的命…

Kubernetes(K8s)DashBoard的使用-11

DashBoard 之前在kubernetes中完成的所有操作都是通过命令行工具kubectl完成的。其实&#xff0c;为了提供更丰富的用户体验&#xff0c;kubernetes还开发了一个基于web的用户界面&#xff08;Dashboard&#xff09;。用户可以使用Dashboard部署容器化的应用&#xff0c;还可以…

redis应用-分布式锁

目录 什么是分布式锁 分布式锁的基本实现 引入过期时间 引入校验id 引入lua 引入看门狗 引入redlock算法 什么是分布式锁 在一个分布式系统中,也会涉及到多个节点访问同一个公共资源的情况,此时就需要通过锁来做互斥控制,避免出现类似于"线程安全"的问题. 而…

2023_Spark_实验二十七:Linux中Crontab(定时任务)命令详解及使用教程

Crontab介绍&#xff1a; Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中&#xff0c;用于设置周期性被执行的指令。该命令从标准输入设备读取指令&#xff0c;并将其存放于“crontab”文件中&#xff0c;以供之后读取和执行。该词来源于希腊语 chronos(χρ…

华为数通---配置ARP安全综合功能案例

简介 ARP&#xff08;Address Resolution Protocol&#xff09;安全是针对ARP攻击的一种安全特性&#xff0c;它通过一系列对ARP表项学习和ARP报文处理的限制、检查等措施来保证网络设备的安全性。ARP安全特性不仅能够防范针对ARP协议的攻击&#xff0c;还可以防范网段扫描攻击…

大数据可视化项目——基于Python豆瓣电影数据可视化分析系统的设计与实现

大数据可视化项目——基于Python豆瓣电影数据可视化分析系统的设计与实现 本项目旨在通过对豆瓣电影数据进行综合分析与可视化展示&#xff0c;构建一个基于Python的大数据可视化系统。通过数据爬取收集、清洗、分析豆瓣电影数据&#xff0c;我们提供了一个全面的电影信息平台…

Android Glide自定义AppCompatImageView切分成若干小格子,每个小格子onDraw绘制Bitmap,Kotlin(1)

Android Glide自定义AppCompatImageView切分成若干小格子&#xff0c;每个小格子onDraw绘制Bitmap&#xff0c;Kotlin&#xff08;1&#xff09; 垂直方向的RecyclerView&#xff0c;每行一个AppCompatImageView&#xff0c;每个AppCompatImageView被均匀切割成n个小格子&#…

[Geek Challenge 2023] web题解

文章目录 EzHttpunsignn00b_Uploadeasy_phpEzRceezpython EzHttp 按照提示POST传参 发现密码错误 F12找到hint&#xff0c;提示./robots.txt 访问一下&#xff0c;得到密码 然后就是http请求的基础知识 抓包修改 最后就是 我们直接添加请求头O2TAKUXX: GiveMeFlag 得到flag…

RabbitMQ创建新用户,并给用户添加角色和授权

一、进入容器 1.1 查看运行容器的详细信息 docker ps -a1.2 进入容器命令 docker exec -it 容器ID /bin/bash 或 docker exec -it 容器name bash 1.3 退出容器命令 exit 或者 CtrlQP 二、操作RabbitMQ 2.1 查看用户列表 注:先进入到容器内部 rabbitmqctl list_user…

云服务器与nas实现在冷热资源访问,nginx代理

在实际项目中&#xff0c;我们的文件存储是一个必不可少的环节&#xff0c;本博主了解到现在的存储方案有 购买纯系统的云服务器&#xff0c;自己安装个mino,再使用nginx代理给web使用购买OSS服务&#xff0c;现在有云厂商都有提供&#xff0c;储存价格也挺便宜的&#xff0c;…

[论文阅读]DETR

DETR End-to-End Object Detection with Transformers 使用 Transformer 进行端到端物体检测 论文网址&#xff1a;DETR 论文代码&#xff1a;DETR 简读论文 这篇论文提出了一个新的端到端目标检测模型DETR(Detection Transformer)。主要的贡献和创新点包括: 将目标检测视为一…

定时补偿方案

1&#xff1a;需求描述 支持NVR升级后通道数变更&#xff0c;完成升级后&#xff0c;设备SDK上报通道数量给A平台&#xff0c;A平台将NVR通道数量同步给B平台&#xff0c;B平台自动调用C平台接口&#xff0c;同步通道数量给C平台&#xff0c;C平台重新生成通道序列号&#xff…

U-boot(八):官方uboot移植

本文主要探讨从ubboot官方移植uboot到x210。 基础 确定设备的配置文件 通过board.cfg中的cpu型号(s5pc1xx)确定设备的配置文件 头文件:include/configs/s5p_goni.h cpu: u-boot-2013.10\arch\arm\cpu\armv7 board: u-boot-2013.10\b…

JVM 执行引擎篇

机器码、指令、汇编语言 机器码 各种用二进制编码方式表示的指令&#xff0c;叫做机器指令码。开始&#xff0c;人们就用它采编写程序&#xff0c;这就是机器语言。机器语言虽然能够被计算机理解和接受&#xff0c;但和人们的语言差别太大&#xff0c;不易被人们理解和记忆&a…

用23种设计模式打造一个cocos creator的游戏框架----(八)适配器模式

1、模式标准 模式名称&#xff1a;适配器模式 模式分类&#xff1a;结构型 模式意图&#xff1a;适配器模式的意图是将一个类的接口转换成客户端期望的另一个接口。适配器模式使原本接口不兼容的类可以一起工作。 结构图&#xff1a; 适用于&#xff1a; 系统需要使用现有的…

【从0配置JAVA项目相关环境2】node.js + 前端 从配置到运行

运行前端项目 写在最前面一、安装node.js二、运行前端项目1. 运行 npm install2. 运行 npm run serve报错Error: error:0308010C:digital envelope routines::unsupported方法1&#xff1a;设置 NODE_OPTIONS &#xff08;没用&#xff09;方法2&#xff1a;更改Node.js版本方法…

2023字节跳动软件测试工程师面试题及答案分享

相信大家都有这样一个忧虑就是面试&#xff0c;不管我们要找什么工作&#xff0c;面试都会是必不可少的&#xff0c;下面是整理出来的面试题和我的一些见解觉得不对的在评论区留言&#xff01; 1、什么是兼容性测试&#xff1f;兼容性测试侧重哪些方面&#xff1f; 参考答案&…

2022年拉丁美洲中东和非洲医疗机器人市场及全球概况报告

今天分享的是机器人系列深度研究报告&#xff1a;《2022年拉丁美洲中东和非洲医疗机器人市场及全球概况报告》。 &#xff08;报告出品方&#xff1a;Apollo Reports&#xff09; 报告共计&#xff1a;195页 研究方法论 2.1通过桌面研究和内部存储库的假设 a)最初&#xff…

多传感器融合SLAM在自动驾驶方向的初步探索的记录

1. VIO的不可观问题 现有的VIO都是解决的六自由度的问题, 但是对于行驶在路面上的车来说, 通常情况下不会有roll与z方向的自由度, 而且车体模型限制了不可能有纯yaw的变换. 同时由于IMU在Z轴上与roll, pitch上激励不足, 会导致IMU在初始化过程中尺度不准以及重力方向估计错误,…