1.题目描述
2.思路
首先判断target是否有可能在矩阵的某一行里,没可能直接返回False,有可能就在这一行里二分查找。
3.代码(Python3)
class Solution:
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
m, n = len(matrix), len(matrix[0])
target_row = -1
for i in range(m):
if target < matrix[i][0]: break
if target == matrix[i][0] or target == matrix[i][n - 1]: return True
if matrix[i][0] < target < matrix[i][n - 1]:
target_row = i
break
if target_row != -1:
left, right = 0, n - 1
while left <= right:
mid = (right + left) // 2
if matrix[target_row][mid] == target: return True
elif matrix[target_row][mid] > target: right = mid - 1
else: left = mid + 1
return False
4.执行情况
5.感想
最近做题手挺顺的,也可能是因为题目简单吧。