【hot100】刷题记录(29)-搜索二维矩阵

ops/2025/2/28 20:22:32/

题目描述:

给你一个满足下述两条属性的 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

 

我的作答:

每行每列搜索,因为矩阵是有序的;

python">class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:if not matrix: return Falsem = len(matrix)n = len(matrix[0])i, j = 0, 0while i<m and target>matrix[i][n-1]: #比每行的最后一个数大就跳过,+1i += 1if i>=m: return False #如果每行都比target小就falsewhile j<n and target>matrix[i][j]: #该行的列搜索j += 1if j>=n: return False #如果该行没有就falseif target!=matrix[i][j]: #跳出循环此时matrix[i][j]应该>=targetreturn Falseelse: return True

 

时间复杂度O(m+n),空间复杂度O(1)

 

参考:

二分法O(logmn)

python">class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:m, n = len(matrix), len(matrix[0])left, right = -1, m * nwhile left + 1 < right:mid = (left + right) // 2x = matrix[mid // n][mid % n]if x == target:return Trueif x < target:left = midelse:right = midreturn False

 


http://www.ppmy.cn/ops/162053.html

相关文章

视频级虚拟试衣技术在淘宝的产品化实践

作为一种新的商品表现形态&#xff0c;内容几乎存在于手淘用户动线全流程&#xff0c;例如信息流种草内容、搜索消费决策内容、详情页种草内容等。通过低成本、高时效的AIGC内容生成能力&#xff0c;能够从供给端缓解内容生产成本高的问题&#xff0c;通过源源不断的低成本供给…

游戏引擎学习第124天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾/复习 今天是继续完善和调试多线程的任务队列。之前的几天&#xff0c;我们已经介绍了多线程的一些基础知识&#xff0c;包括如何创建工作队列以及如何在线程中处理任务。今天&#xff0c;重点是解决那些我们之前没有注意到…

Document对象

DOM4j中&#xff0c;获得Document对象的方式有三种&#xff1a; 1.读取XML文件,获得document对象 SAXReader reader new SAXReader(); Document document reader.read(new File("input.xml")); 2.解析XML形式的文本,得到document对象…

泛微e-office index.php sql注入漏洞复现(CNVD-2022-2)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…

Vue 项目中配置代理的必要性与实现指南

Vue 项目中配置代理的必要性与实现指南 在 Vue 前端项目的开发过程中&#xff0c;前端与后端地址通常不同&#xff0c;可能引发跨域问题。为了在开发环境下顺畅地请求后端接口&#xff0c;常常会通过配置**代理&#xff08;proxy&#xff09;**来解决问题。这篇文章将详细解析…

Gin从入门到精通 (七)文件上传和下载

文件上传和下载 1.文件上传 1.1单文件上传 在 Gin 中处理单文件上传&#xff0c;可以使用 c.FormFile 方法获取上传的文件&#xff0c;然后使用 c.SaveUploadedFile 方法保存文件。 package mainimport ("github.com/gin-gonic/gin""log" )func main()…

SEO炼金术(4)| Next.js SEO 全攻略

在上一篇文章 SEO炼金术&#xff08;3&#xff09;| 深入解析 SEO 关键要素 中&#xff0c;我们深入解析了 SEO 关键要素&#xff0c;包括 meta 标签、robots.txt、canonical、sitemap.xml 和 hreflang&#xff0c;并探讨了它们在搜索引擎优化&#xff08;SEO&#xff09;中的作…

为AI聊天工具添加一个知识系统 之125 详细设计之66 智能语义网络

本文要点 要点 需要了解 ”智能“的不同意义。语义学有三&#xff1a;形式语义学、词典语义学和认知语义学。下面给出本项目的设计对“智能”的所有三种语义学 划分。 1、形式语义学&#xff08;认识对象执行操作系统化&#xff0c;形式化目的-形成数据&#xff08;形成式智…