首页 > 其他 > 详细

leetcode 每日一题 74. 搜索二维矩阵

时间:2020-06-12 10:16:59      阅读:52      评论:0      收藏:0      [点我收藏+]

技术分享图片

二分法

思路:

方法①:由于矩阵是有序的,先二分法找到所在行,再二分法找到所在列。

方法②:根据行列映射关系,直接二分法查找二维矩阵。

代码一:

class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        if not matrix or not matrix[0]:
            return False
        rowSize = len(matrix)
        colSize = len(matrix[0])
        rowl = 0
        rowr = rowSize-1
        while rowl<rowr:
            rowmid = (rowl+rowr)//2
            if matrix[rowmid][colSize-1] >= target:
                rowr = rowmid
            else:
                rowl = rowmid+1
        l = 0
        r = colSize-1
        while l <= r:
            mid = (l+r)//2
            if matrix[rowr][mid] > target:
                r = mid -1 
            elif matrix[rowr][mid] < target:
                l = mid +1
            else:
                return True
        return False

代码二:

class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        m = len(matrix)
        if m == 0:
            return False
        n = len(matrix[0])
        left, right = 0, m * n - 1
        while left <= right:
                mid = (left + right) // 2
                midElement = matrix[mid // n][mid % n]
                if target == midElement:
                    return True
                else:
                    if target < midElement:
                        right = mid - 1
                    else:
                        left = mid + 1
        return False

 

 

 

leetcode 每日一题 74. 搜索二维矩阵

原文:https://www.cnblogs.com/nilhxzcode/p/13097347.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!