LeetCode #74 Search a 2D Matrix
题目
解题方法
实质上就是先对第一列进行二分查找,再对比较小的那个行做行内二分查找。注意二分查找选择结束值的时候,这里要选below,即right值,因为是要在小的那一行找,如果选了above就是在大的那一行找了,就错了。
代码
class Solution:
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
if not matrix or not matrix[0]:
return False
m = len(matrix)
n = len(matrix[0])
row = 0
above = 0
below = m - 1
while above <= below:
mid = (above + below) // 2
if matrix[mid][0] == target:
return True
elif matrix[mid][0] > target:
below = mid - 1
else:
above = mid + 1
row = below
left = 0
right = n - 1
while left <= right:
mid = (left + right) // 2
if matrix[row][mid] == target:
return True
elif matrix[row][mid] > target:
right = mid - 1
else:
left = mid + 1
return False

浙公网安备 33010602011771号