力扣刷题Day 69:搜索二维矩阵(74)

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.感想

最近做题手挺顺的,也可能是因为题目简单吧。