【力扣】240:搜索二維矩陣 II

題目描述

編寫一個高效的算法來搜索 m x n 矩陣 matrix 中的一個目標值 target。該矩陣具有以下特性:

每行的元素從左到右升序排列。
每列的元素從上到下升序排列。

來源:力扣(LeetCode)

算法思路

二分

class Solution:
    def findNumberIn2DArray(self, matrix, target: int) -> bool:
        def BS(ls):
            l,r=0,len(ls)-1
            while l<=r:
                mid=(l+r)//2
                if ls[mid]==target:return True
                if ls[mid]>target:r=mid-1
                else:l=mid+1
            return False
        for i in matrix:
            if BS(i):return True
        return False

IMPROVE

大佬的操作:從矩陣右上角往左下看!

從這個角度看,假設任意一點K,K的左邊的值都小於K,K的下面的值都大於K。

class Solution:
    def searchMatrix(self, matrix, target):
        if not matrix or not matrix[0]:return False
        m,n=len(matrix),len(matrix[0])

        i,j=0,n-1
        while 0<=i<m and 0<=j<n:
            if matrix[i][j]==target:return True
            if matrix[i][j]>target:
                j-=1
            else:
                i+=1
        return False
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章