74. 搜索二维矩阵

题目来源:

LeetCode题目:74. 搜索二维矩阵 - 力扣(LeetCode)

解题思路:

两次二分。第一次二分寻找第一列中小于等于target的最大值,第二次 在该行中找到小于等于target的最大值,最后判断是否存在该值及该值是否是 target。

解题代码:

复制代码
#python3
class Solution:
    def getIndex(matrix:List[int],target:int)->int:
        left=0
        right=len(matrix)-1
        while(left<right):
            mid=(left+right)//2+1
            if matrix[mid]==target:
                return mid
            elif matrix[mid]<target:
                left=mid
            else:
                right=mid-1
        return left


    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        n0=[]
        for i in range(len(matrix)):
            n0.append(matrix[i][0])
        row=Solution.getIndex(n0,target)
        if row<0 or  row>=len(matrix):
            return False
        column=Solution.getIndex(matrix[row],target)
        if column<0 or column>=len(matrix[0]):
            return False
        return matrix[row][column]==target
复制代码

总结:

官方题解给出了两种解法。第一个是两次二分。第二个是一次二分,讲二维数组拼接为一维数组后再进行二分查找。


相关推荐
夏鹏今天学习了吗1 小时前
【LeetCode热题100(54/100)】全排列
算法·leetcode·深度优先
DARLING Zero two♡6 小时前
【优选算法】D&C-Mergesort-Harmonies:分治-归并的算法之谐
java·数据结构·c++·算法·leetcode
Q741_1478 小时前
C++ 分治 归并排序 归并排序VS快速排序 力扣 912. 排序数组 题解 每日一题
c++·算法·leetcode·归并排序·分治
熬了夜的程序员18 小时前
【LeetCode】89. 格雷编码
算法·leetcode·链表·职场和发展·矩阵
dragoooon3420 小时前
[优选算法专题四.前缀和——NO.31~32 连续数组、矩阵区域和]
数据结构·算法·leetcode·1024程序员节
熬了夜的程序员1 天前
【LeetCode】87. 扰乱字符串
算法·leetcode·职场和发展·排序算法
·白小白1 天前
力扣(LeetCode) ——15.三数之和(C++)
c++·算法·leetcode
海琴烟Sunshine1 天前
leetcode 268. 丢失的数字 python
python·算法·leetcode
仰泳的熊猫1 天前
LeetCode:268. 丢失的数字
数据结构·c++·算法·leetcode
VT.馒头1 天前
【力扣】2725. 间隔取消
javascript·leetcode·1024程序员节