搜索二维矩阵(二分法)

搜索二维矩阵

1、题目

图1

2、题解

两次二分查找

先二分查找找到小于target的是哪一行,并且下一行的第一个数大于target,然后在该行二分查找到target。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution:
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
r_t,r_b = 0,len(matrix)
l_l,l_r = 0,len(matrix[0])
m,n = len(matrix), len(matrix[0])
col0 = [col[0] for col in matrix]
while r_t<r_b:
r_mid = r_t + (r_b - r_t)//2
if col0[r_mid]<= target:
r_t = r_mid+1
else:
r_b = r_mid
if r_t < 0 :
return False

while l_l<l_r:
l_mid = l_l + (l_r - l_l)//2
if matrix[r_t-1][l_mid]<target:
l_l = l_mid + 1
else:
l_r = l_mid

if l_l >= n:
return False

if matrix[r_t-1][l_l] == target:
return True

return False


搜索二维矩阵(二分法)
http://example.com/2024/04/14/搜索二维矩阵-1/
作者
Z Z
发布于
2024年4月14日
许可协议