美文网首页
python-搜索二维矩阵 II

python-搜索二维矩阵 II

作者: JerryLoveCoding | 来源:发表于2020-03-15 20:27 被阅读0次

    编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:
    每行的元素从左到右升序排列。
    每列的元素从上到下升序排列。
    如:
    [
    [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
    思路:
    可以看到,每行最左边的元素都是该行最小的,同时它的下方和右方又都比他大。
    总结:矩阵左下角的元素,所有比他大的元素都在他右侧(所在列右侧),所有比他小的元素都在他上侧(所在行上侧)。

    所以可以用最后一行最左边的元素作为起始索引(i,j)。
    若是索引值大于target,说明target可能再索引所在行的上方,i-=1;若是索引值小于target,说明target可能在索引所在列的右方,j+=1;若是恰好是该值,则输出。
    代码:

    class Solution:
        def searchMatrix(self, matrix, target):
            """
            :type matrix: List[List[int]]
            :type target: int
            :rtype: bool
            """
            if not matrix:
                return False
            rol = len(matrix)
            col = len(matrix[0])
            i = rol - 1  # 搞一个始终指向当下矩阵的左下角index
            j = 0
            judge = False
            while (i >= 0) or (j < col):
                if i<0 or j>(col-1):
                    break
                if matrix[i][j] > target:
                    # 证明在index的上方
                    i = i - 1
                elif matrix[i][j] < target:
                    # 证明在index的右方
                    j = j + 1
                elif matrix[i][j] == target:
                    judge = True
                    break
            return judge
    

    相关文章

      网友评论

          本文标题:python-搜索二维矩阵 II

          本文链接:https://www.haomeiwen.com/subject/ipgvehtx.html