leetcode hot100 74. 搜索二维矩阵 二分查找 medium


矩阵满足:

  1. 每行递增
  2. 下一行的第一个元素 > 上一行的最后一个元素

这意味着:整个矩阵如果按行"拉直",是一个严格递增的一维数组

所以可以直接用 二分查找。

不需要真的展开数组,只需要"映射索引"。

coffeescript 复制代码
class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        m = len(matrix)
        n = len(matrix[0])

        left = 0
        right = m * n - 1

        while left <= right:
            mid = (left+right)//2
            row = mid // n   # 不需要真的展开数组,只需要"映射索引"。
            col = mid % n

            if matrix[row][col] > target:
                right = mid - 1
            elif matrix[row][col] < target:
                left = mid+1
            else:
                return True

        return False  # 找不到

时间复杂度 O(log(mn))

空间复杂度:O(1)

相关推荐
圣保罗的大教堂10 小时前
leetcode 453. 最小操作次数使数组元素相等 中等
leetcode
Tisfy13 小时前
LeetCode 0453.最小操作次数使数组元素相等:两次遍历(反向思维)
算法·leetcode·题解·遍历·反向思维
君万13 小时前
【LeetCode每日一题】回溯:46. 全排列 78. 子集 39. 组合总和
算法·leetcode·go
Tisfy15 小时前
LeetCode 3665.统计镜子反射路径数目:三个动态规划数组
leetcode·动态规划·代理模式·题解
海绵宝宝转agent16 小时前
LeetCode100 二叉树个人题解
算法·leetcode·深度优先
文丑颜不良啊17 小时前
LeetCode1581~1600题目解析
java·leetcode
文丑颜不良啊20 小时前
LeetCode1541~1560题目解析
java·leetcode
文丑颜不良啊1 天前
LeetCode1481~1500题目解析
java·leetcode
文丑颜不良啊1 天前
LeetCode1381~1400题目解析
java·leetcode
Tisfy1 天前
LeetCode 3882.网格图中最小异或路径:动态规划
算法·leetcode·动态规划