音乐
音乐
暂未播放
0:00/0:00
暂无歌词
LeetCode | 搜索二维矩阵
520 字
3 分钟
LeetCode | 搜索二维矩阵
分类:二分查找 / 数组 / 矩阵
题目#
给你一个满足下述两条属性的 m x n 整数矩阵:
- 每行中的整数从左到右按非严格递增顺序排列。
- 每行的第一个整数大于前一行的最后一个整数。
给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。
讲解#
二分法。
一维二分#
看成一维数组,在 [0, m * n) 这个范围里做二分,找第一个大于等于 target 的位置。
两次二分#
第二种方法是做两次二分。
第一次二分先找 target 可能在哪一行。
找到这一行之后,再对这一行做一次普通二分查找。
复杂度#
- 一维二分:
- 时间复杂度:
O(log(m * n)) - 空间复杂度:
O(1)
- 时间复杂度:
- 两次二分:
- 时间复杂度:
O(log(m) + log(n)) - 空间复杂度:
O(1)
- 时间复杂度:
因为 log(m) + log(n) = log(m * n),所以两种方法的时间复杂度本质上是一样的。
代码#
一维二分#
源码#
1from typing import List2
3
4class Solution:5 def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:6 m = len(matrix)7 n = len(matrix[0])8 left = 09 right = m * n10
11 while left < right:12 mid = (left + right) // 213 x = matrix[mid // n][mid % n]14 if x < target:15 left = mid + 116 else:17 right = mid18
19 return left < m * n and matrix[left // n][left % n] == target两次二分#
源码#
1from typing import List2
3
4class Solution:5 def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:6 m = len(matrix)7 n = len(matrix[0])8
9 top = 010 bottom = m - 111 while top <= bottom:12 row = (top + bottom) // 213 if matrix[row][0] <= target <= matrix[row][n - 1]:14 break15 if matrix[row][0] > target:16 bottom = row - 117 else:18 top = row + 119
20 if top > bottom:21 return False22
23 left = 024 right = n - 125 while left <= right:26 mid = (left + right) // 227 if matrix[row][mid] == target:28 return True29 if matrix[row][mid] < target:30 left = mid + 131 else:32 right = mid - 133
34 return False测试#
1from src.python._074_Search_A_2D_Matrix import Solution2
3
4sol = Solution()5
6matrix = [[1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 60]]7assert sol.searchMatrix(matrix, 3) is True8assert sol.searchMatrix(matrix, 13) is False9assert sol.searchMatrix([[1]], 1) is True10assert sol.searchMatrix([[1]], 2) is False11
12print("PASS")参考资料#
- LeetCode 原题:https://leetcode.com/problems/search-a-2d-matrix/
- AlgoMonster 一维二分题解:https://algo.monster/liteproblems/74
- 两次二分参考题解:https://blog.csdn.net/weixin_56980169/article/details/135609735
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
LeetCode | 搜索二维矩阵
https://leetcode.com/problems/search-a-2d-matrix/最后更新于 2026-08-04
部分内容可能已过时
相关文章智能推荐
1
LeetCode | 搜索插入位置
LeetCodeLeetCode 搜索插入位置题解:用二分查找在升序数组中找到目标位置或插入位置。
2
LeetCode | 矩阵置零
LeetCodeLeetCode 矩阵置零题解:使用行列标记数组记录需要清零的位置,再统一修改原矩阵。
3
LeetCode | 搜索旋转排序数组
LeetCodeLeetCode 搜索旋转排序数组题解:在旋转数组中判断有序半区,再用二分缩小范围。
4
LeetCode | 寻找旋转排序数组中的最小值
LeetCodeLeetCode 寻找旋转排序数组中的最小值题解:比较 nums[mid] 与 nums[right],定位旋转断点。
5
LeetCode | 寻找两个正序数组的中位数
LeetCodeLeetCode 寻找两个正序数组的中位数题解:用二分查找切分位置,在 O(log(min(m,n))) 时间内求中位数。
随机文章随机推荐
暂无随机文章
评论区
分享你的想法,与大家交流讨论
站点统计
文章
118
分类
20
标签
164
总字数
1,050,769
运行时长
0 天
最后活动
0 天前
最新动态
2026.09.04
过往皆是序章,前路漫有星光
2026.09.02
九月风至,赴约燕园
2026.07.06
岁次壬寅,序属季夏。负箧吴江,栖迟久泳。时维高考新败,登阊门而北望,临胥江以长嗟。昔者子安命蹇,尚能奋藻于滕阁;今吾才疏,岂可沉沦于吴市?乃焚膏以继晷,立雪而追贤。自暑月即研电学之微,探数理之奥。但求踔厉侪辈,砥砺锋芒。 洎乎素商既至,庠序始开。选修五门皆得满绩,总评冠绝同侪。然尘世难料,人心叵测。交非其人,悔吝丛生。一载相交,竟转瞬成参商。当是时也,恍若屈子见放,贾生受谗。然仲尼厄而作春秋,左丘眇而厥有国语。经此砥砺,竟愈宿疾:昔之曲意逢迎,今则坦荡自持;向之汲汲人言,今则泰然自若。所谓塞翁失马,焉知非福耶? 若夫玄冥司节,青阳启序。既专课业,复骋赛场。数模电赛,殚精竭虑;车赛集创,呕心镂骨。常观吴江夜月,每伴姑苏晨星。悬梁刺股,非为功名之累;凿壁囊萤,实怀鸿鹄之志。终使课业蝉联榜首,竞赛累获殊荣。然形神俱瘁,犹记寒宵病骨,强支案牍;伏暑昏眩,犹自深研不辍。 岁次甲辰,时逢白藏。绩点累年称冠,奖项盈箧成行。遂膺国奖之荣,如登龙门之津。乃遍谒名师,广求良策。拟鹏徙南冥,期凤鸣岐阳。幸得燕园李萌先生青眼,许列门墙。继入艾捷科芯实习,兼修毕业设计。两事交并,心力俱疲。承钟林峰师兄鼎力,终克难关。 今当辞别葑溪,将赴燕台。忆昔韩洪润学长,指迷津于暗夜;念吴圣洁挚友,伴苦读于寒窗。实乃天眷优渥,得遇诸君。昔者范公划粥,终成社稷之臣;欧母画荻,乃育文章之伯。予虽驽钝,敢不踵武前修?悟已往之不谏,知来者之可追。陶元亮归去来辞,实获我心;王子安穷且益坚,宁移素志?今将整装而北发,岂效楚囚之泣?当乘长风,破巨浪,展鸿图于未央!
日
一
二
三
四
五
六
文章目录
--
总访问量
--
访客数
公告
音乐
音乐
暂未播放
0:00/0:00
暂无歌词
站点统计
文章
118
分类
20
标签
164
总字数
1,050,769
运行时长
0 天
最后活动
0 天前
最新动态
2026.09.04
过往皆是序章,前路漫有星光
2026.09.02
九月风至,赴约燕园
2026.07.06
岁次壬寅,序属季夏。负箧吴江,栖迟久泳。时维高考新败,登阊门而北望,临胥江以长嗟。昔者子安命蹇,尚能奋藻于滕阁;今吾才疏,岂可沉沦于吴市?乃焚膏以继晷,立雪而追贤。自暑月即研电学之微,探数理之奥。但求踔厉侪辈,砥砺锋芒。 洎乎素商既至,庠序始开。选修五门皆得满绩,总评冠绝同侪。然尘世难料,人心叵测。交非其人,悔吝丛生。一载相交,竟转瞬成参商。当是时也,恍若屈子见放,贾生受谗。然仲尼厄而作春秋,左丘眇而厥有国语。经此砥砺,竟愈宿疾:昔之曲意逢迎,今则坦荡自持;向之汲汲人言,今则泰然自若。所谓塞翁失马,焉知非福耶? 若夫玄冥司节,青阳启序。既专课业,复骋赛场。数模电赛,殚精竭虑;车赛集创,呕心镂骨。常观吴江夜月,每伴姑苏晨星。悬梁刺股,非为功名之累;凿壁囊萤,实怀鸿鹄之志。终使课业蝉联榜首,竞赛累获殊荣。然形神俱瘁,犹记寒宵病骨,强支案牍;伏暑昏眩,犹自深研不辍。 岁次甲辰,时逢白藏。绩点累年称冠,奖项盈箧成行。遂膺国奖之荣,如登龙门之津。乃遍谒名师,广求良策。拟鹏徙南冥,期凤鸣岐阳。幸得燕园李萌先生青眼,许列门墙。继入艾捷科芯实习,兼修毕业设计。两事交并,心力俱疲。承钟林峰师兄鼎力,终克难关。 今当辞别葑溪,将赴燕台。忆昔韩洪润学长,指迷津于暗夜;念吴圣洁挚友,伴苦读于寒窗。实乃天眷优渥,得遇诸君。昔者范公划粥,终成社稷之臣;欧母画荻,乃育文章之伯。予虽驽钝,敢不踵武前修?悟已往之不谏,知来者之可追。陶元亮归去来辞,实获我心;王子安穷且益坚,宁移素志?今将整装而北发,岂效楚囚之泣?当乘长风,破巨浪,展鸿图于未央!



