zoukankan      html  css  js  c++  java
  • leetcode刷题-74搜索二维矩阵

    题目

    编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

    每行中的整数从左到右按升序排列。
    每行的第一个整数大于前一行的最后一个整数。
    示例 1:

    输入:
    matrix = [
    [1, 3, 5, 7],
    [10, 11, 16, 20],
    [23, 30, 34, 50]
    ]
    target = 3
    输出: true

    思路

    方法一:

    将targrt与每行末尾比较,若比末尾小,则查看其是否在此行中

    方法二:

    阅读解答后,发现此题等于二分法

    实现

    方法一:

    class Solution:
        def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
            if len(matrix) == 0 or len(matrix[0]) == 0:
                return False
            for row in range(len(matrix)):
                if target <= matrix[row][-1]:
                    if target in matrix[row]:
                        return True
            return False

    方法二:

    class Solution:
        def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
            row = len(matrix)
            if row == 0:
                return False
            col = len(matrix[0])
            begin, last = 0,row*col -1
            while begin <= last:
                mid = (begin + last) // 2
                cur = matrix[mid//col][mid%col]
                if target == cur:
                    return True
                elif target > cur:
                    begin = mid + 1
                else:
                    last = mid -1
            return False
  • 相关阅读:
    JS 缓存
    时区转换
    JQuery easy UI 通过updateRow 排序
    SqlServer2008 数据库同步的两种方式
    C#各种辅助类收集(CSharpCommonHelper)
    Doc命令收集(一)
    Sql Server Alter语句
    JQuery easy UI updateRow
    Doc命令收集(二)
    六大开源搜索引擎工具
  • 原文地址:https://www.cnblogs.com/mgdzy/p/13456933.html
Copyright © 2011-2022 走看看