当前位置: 首页 > news >正文

LeetCode 分类刷题:74. 搜索二维矩阵

题目

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

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

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

解析

由于矩阵的每一行是递增的,且每行的第一个数大于前一行的最后一个数,如果把矩阵每一行拼在一起,我们可以得到一个递增数组。

例如示例 1,三行拼在一起得

a=[1,3,5,7,10,11,16,20,23,30,34,60]
由于这是一个有序数组,我们可以用二分查找判断 target 是否在 matrix 中。

一般地,有

  • a[i]=matrix[ ⌊i/n⌋ ][ i mod n ]

作者:灵茶山艾府
链接:https://leetcode.cn/problems/search-a-2d-matrix/submissions/668071757/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

答案

自己写的

class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:row = len(matrix)col = len(matrix[0])for i in range(row):    # 遍历每一行,进行二分查找left = -1right = col - 1if matrix[i][right] < target:    # 当前行最大值小于target,直接跳至下一行continuewhile left + 1 < right:mid = (left + right) // 2if matrix[i][mid] < target:    # left恒小于target,right恒大于等于targetleft = midelse:right = midif matrix[i][right] == target:    # right指向第一个大于等于target元素return Truereturn False

灵神答案

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恒指向小于target的元素,right恒指向大于target的元素left = mid    # target的搜索范围为开区间(left, right)else:right = mid return False

复杂度分析

我的答案:

时间复杂度:O(mlog(n)),其中 m 和 n 分别为 matrix 的行数和列数。

空间复杂度:O(1)。

灵神答案:

时间复杂度:O(log(mn)),其中 m 和 n 分别为 matrix 的行数和列数。

空间复杂度:O(1)。

作者:灵茶山艾府
链接:https://leetcode.cn/problems/search-a-2d-matrix/submissions/668071757/
来源:力扣(LeetCode)

http://www.dtcms.com/a/445479.html

相关文章:

  • 网站建设项目职责memcache安装wordpress
  • MySQL查看数据表锁定情况
  • sq网站推广用jsp做的网站源代码下载
  • 玩转ClaudeCode:通过Chrome DevTools MCP实现高级调试与反反爬策略
  • 国内做焊接机器人平台网站网络营销的方法是什么
  • 网站建设一般用什么软件敏捷模型是软件开发模型吗
  • 做网站好的品牌泰安房产网签查询
  • No商业网站建设wordpress 调用插件
  • 免费模板网站都有什么区别合肥网络seo
  • 什么是网站地址云服务器上放多个网站
  • 电子商务网站费用预算必须在当地网站备案
  • 遵义市播州区建设厅网站镇江网站建设和优化推广多少钱
  • 安阳建设网站哪家好久久项目咨询有限公司
  • 3g门户网站无锡企业网站制作
  • 手表回收网网站个人网页设计作品介绍
  • 如何用vps系统搭建企业网站以及邮箱系统网站建设运营预算
  • 贵阳网站建设app开发修仙网页游戏大全
  • 广东省建设网站深圳市网站建设科技公司
  • 一流的手机网站建设广州推广系统
  • 网站建设广州北京怎么做网站推广
  • php做网站的公司有哪些网站如何免费做SEO优化
  • 佛山优化网站网站开发虚拟主机是什么
  • 洛阳青峰做网站教育网站制作价格
  • 贵阳公司网站建立政务服务中心网站建设实施方案
  • 医院网站建设与管理ppt如何结合搜索检索与seo推广
  • 网站怎样做seo推广桂林网上服务
  • 玉环网站建设wordpress tag 去掉
  • 石家庄网站开发与优化华阴网络推广
  • 凤凰网站建设公司上海闵行是郊区吗
  • 如何做一起好的视频宣传自己的网站做视频网站需要什么空间吗