python算法题---搜索二维矩阵

刷题顺序是按照LeetCode的算法面试题汇总进行的.

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:
每行的元素从左到右升序排列。
每列的元素从上到下升序排列。
示例:
现有矩阵 matrix 如下:
[
[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]
给定 target = 5,返回 true。
给定 target = 20,返回 false。

使用的是遍历搜索的方式,根据矩阵的规则,写好跳出条件,减少循环次数。之后会用二叉搜索树再实现一次。

def search_matrix(matrix: list, target: int) -> bool:
    """
    :type matrix: list
    :type target: int
    :rtype: bool
    """
    for i in matrix:
        for j in i:
            if target < j:
                # 当要搜索的数字小于当前数字的时候,结束本次遍历,减少遍历次数
                break
            elif target == j:
                return True
            else:
                pass
    return False


if __name__ == '__main__':
    m = [
            [1, 4, 7, 11, 15],
            [2, 5, 8, 12, 19],
            [3, 6, 9, 16, 22],
            [10, 13, 14, 17, 24],
            [18, 21, 23, 26, 30]
        ]
    t = 20
    print(search_matrix(m, t))

你可能感兴趣的:(python算法题---搜索二维矩阵)