leetcode刷题记录(九十)——74. 搜索二维矩阵

server/2025/2/1 20:57:57/

(一)问题描述

74. 搜索二维矩阵 - 力扣(LeetCode)74. 搜索二维矩阵 - 给你一个满足下述两条属性的 m x n 整数矩阵: * 每行中的整数从左到右按非严格递增顺序排列。 * 每行的第一个整数大于前一行的最后一个整数。给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。 示例 1:[https://assets.leetcode.com/uploads/2020/10/05/mat.jpg]输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3输出:true示例 2:[https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/11/25/mat2.jpg]输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13输出:false 提示: * m == matrix.length * n == matrix[i].length * 1 <= m, n <= 100 * -104 <= matrix[i][j], target <= 104https://leetcode.cn/problems/search-a-2d-matrix/description/?envType=study-plan-v2&envId=top-100-liked

给你一个满足下述两条属性的 m x n 整数矩阵

  • 每行中的整数从左到右按非严格递增顺序排列。
  • 每行的第一个整数大于前一行的最后一个整数。

给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。

示例 1:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
输出:true

示例 2:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13
输出:false

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= m, n <= 100
  • -104 <= matrix[i][j], target <= 104

(二)解决思路

        从两个方向使用二分法,先对矩阵的第一列使用二分法,找到最后一个小于等于target的元素,这个元素所在的行就是target可能存在的行,再对这一行使用二分法看能否找到target。

 

java">class Solution {public boolean searchMatrix(int[][] matrix, int target) {//先找在哪行int rowNum = matrix.length, colNum = matrix[0].length;if(target<matrix[0][0]||target>matrix[rowNum-1][colNum-1]) return false;int top=0, bottom=matrix.length-1;while(top<=bottom){int mid = (top+bottom)/2;if(target==matrix[mid][0]){return true;}else if(target<matrix[mid][0]){bottom=mid-1;}else{top=mid+1;}}//如果第一列找到target这里就返回了,如果没找到,那target可能在的行就是搜索结束时top的前一行int row=top-1;//在这一行里用二分法判断在不在int left = 0, right = colNum-1;while(left<=right){int mid = (left+right)/2;if(target==matrix[row][mid]){return true;}else if(target<matrix[row][mid]){right=mid-1;}else{left=mid+1;}}return false;}}

http://www.ppmy.cn/server/164161.html

相关文章

自制虚拟机(C/C++)(一、分析语法和easyx运用,完整虚拟机实现)

网上对虚拟机的解释很多&#xff0c;其实本质就一句话 虚拟机就是机器语言解释器 我们今天要实现汇编语言解释器&#xff0c;下一次再加上ndisasm反汇编器就是真正虚拟机了 注:这里的虚拟机指的是VMware一类的&#xff0c;而不是JVM&#xff0c;python一样的高级语言解释器 …

SSM开发(六) SSM整合下的CURD增删改查操作(IDEA版)

目录 一、Mybatis实现增删改查操作(注解版) 1、User实体 2、Mybatis实现增删改查操作(注解版) ①增加 ②删除 ③修改 ④查询 ⑤查询操作where语句中含like 3、service层调用 二、Mybatis实现增删改查操作(XML版) 1、实体定义 2、Mybatis实现增删改查操作(XML版) ①…

JavaScript反爬技术解析与应对

JavaScript 反爬技术解析与应对 前言 在当今 Web 爬虫与数据抓取的生态环境中&#xff0c;网站运营方日益关注数据安全与隐私保护&#xff0c;因此逐步采用多种反爬技术来限制非授权访问。本文从 JavaScript 角度出发&#xff0c;深入剖析主流反爬策略的技术原理&#xff0c;…

Python NumPy(7):连接数组、分割数组、数组元素的添加与删除

1 连接数组 函数描述concatenate连接沿现有轴的数组序列stack沿着新的轴加入一系列数组。hstack水平堆叠序列中的数组&#xff08;列方向&#xff09;vstack竖直堆叠序列中的数组&#xff08;行方向&#xff09; 1.1 numpy.concatenate numpy.concatenate 函数用于沿指定轴连…

出现 Error processing condition on org.springframework.cloud.openfeign 解决方法

目录 前言1. 问题所示2. 原理分析3. 解决方法前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 1. 问题所示 执行代码时,出现如下提示: 2025-01-26 15:32:29.241 INFO 5784 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Fin…

PyTorch张量操作reshape view permute transpose

1. reshape() 和 view() view和reshape都用于改变张量的shape view是reshape的一个特例&#xff0c;view要求张量在内存中是连续的&#xff0c;否则会抛出错误&#xff0c;view只能用于contiguous的张量 reshape会自动处理contiguous的情况&#xff0c;如果张量是contiguous…

Oracle 机器宕机之后启动数据库

Oracle 机器宕机之后启动数据库 启动监听&#xff0c;登录数据库&#xff0c;启动数据库 检查监听 [oracleoracle-db ~]$ lsnrctl statusLSNRCTL for Linux: Version 11.2.0.4.0 - Production on 24-JAN-2025 09:42:34Copyright (c) 1991, 2013, Oracle. All rights reserv…

Python爬虫之——Cookie存储器

目录 专栏导读1、背景介绍2、库的安装3、核心代码4、完整代码总结 专栏导读 &#x1f338; 欢迎来到Python办公自动化专栏—Python处理办公问题&#xff0c;解放您的双手 &#x1f3f3;️‍&#x1f308; 博客主页&#xff1a;请点击——> 一晌小贪欢的博客主页求关注 &…