1. 题目

2. 分析

题目比较简单,就是使用二分法即可解决。

3. 代码

class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        m = len(matrix)
        # 直接遍历m行矩阵
        for i in range(m):
            left = 0
            right = len(matrix[0]) - 1 

            # 如果target比最右侧值都大,那么就在下一行
            if target > matrix[i][right]:
                continue
            
            while( left <= right ):
                mid = (left + right) // 2 
                if matrix[i][mid] > target:
                    right -= 1
                elif matrix[i][mid] < target:
                    left += 1
                else:
                    return True
        return False