题目链接:https://leetcode-cn.com/problems/search-a-2d-matrix/
难度:中等
描述:
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
- 每行中的整数从左到右按升序排列。
- 每行的第一个整数大于前一行的最后一个整数。
提示:m,n范围:[1, 100]
题解
class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:m, n = len(matrix), len(matrix[0])# 找到第一个元素小于target的最大的行的坐标left, right = 0, m - 1while left <= right:mid = (left + right) // 2if matrix[mid][0] > target:right = mid - 1elif matrix[mid][0] < target:left = mid + 1else:return True# 所有元素都比target大if right < 0:return Falserow = rightleft, right = 0, n - 1while left <= right:mid = (left + right) // 2if matrix[row][mid] < target:left = mid + 1elif matrix[row][mid] > target:right = mid - 1else:return Truereturn False
