Search 2D matrix

这个题已经被反复讲过了,最好的办法就是从右上角开始,因为行列的有序性,当当前值小于target我们往下移动,大于则往左移动,如此就可以搜索整个矩阵,时间复杂度是O(lgmn),此外如果用这种解法,search 2D matrix II就跟这道题没有区别了,下面是代码

class Solution(object):
    def searchMatrix(self, matrix, target):
        """
        :type matrix: List[List[int]]
        :type target: int
        :rtype: bool
        """
        n = len(matrix)
        if not n:
            return False

        m = len(matrix[0])
        if not m:
            return False

        row, col = 0, m - 1
        while row < n and col >= 0:
            cur = matrix[row][col]
            if cur < target:
                row += 1
            elif cur > target:
                col -= 1
            else:
                return True
        return False

Search 2D matrix II

跟上面那个一样,右上角开始二分搜索即可

class Solution(object):
    def searchMatrix(self, matrix, target):
        """
        :type matrix: List[List[int]]
        :type target: int
        :rtype: bool
        """
        n = len(matrix)
        if not n:
            return False

        m = len(matrix[0])
        if not m:
            return False

        row, col = 0, m - 1
        while row < n and col >= 0:
            if matrix[row][col] < target:
                row += 1
            elif matrix[row][col] > target:
                col -= 1
            else:
                return True
        return False

results matching ""

    No results matching ""