leetcode hot100 240.搜索二维矩阵



从 右上角 或 左下角 出发

以 右上角 (0, cols-1) 为例:

当前值 x

  • 如果 x == target → 找到了
  • 如果 x > target → 这一列都比 target 大,左移
  • 如果 x < target → 这一行都比 target 小,下移

每一步都能排除一整行或一整列

时间复杂度:O(m + n) :行最多走 m 次,列最多走 n 次。远不会访问同一个单元两次
空间复杂度:O(1): 只用了常数个变量,没有:递归、栈、额外数组、哈希表。空间复杂度 = O(1)

python 复制代码
class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        if not matrix or not matrix[0]:
            return False
        
        rows = len(matrix)
        cols = len(matrix[0])
        
        # 从右上角开始搜索
        row = 0
        col = cols - 1
        
        while row < rows and col >= 0:
            current = matrix[row][col]
            if current == target:
                return True
            elif current > target:
                # 当前值太大,往左移
                col -= 1
            else:
                # 当前值太小,往下移
                row += 1
                
        return False
相关推荐
a1879272183131 分钟前
【算法】动态规划入门:从打家劫舍到状态设计的三堂课
算法·leetcode·动态规划·dp·回溯·暴力
Tisfy11 小时前
LeetCode 3876.构造奇偶一致的数组 II:三种情况分类讨论(其实还是脑筋急转弯)
算法·leetcode·题解·脑筋急转弯
木井巳14 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法
Navigator_Z14 小时前
LeetCode //C - 1224. Maximum Equal Frequency
c语言·算法·leetcode
Navigator_Z15 小时前
LeetCode //C++ - 1226. The Dining Philosophers
c语言·算法·leetcode
CoderYanger19 小时前
A.每日一题:1140. 石子游戏 II
java·程序人生·算法·leetcode·游戏·职场和发展·深度优先
sheeta199821 小时前
LeetCode 每日一题笔记 日期:2026.09.02 题目:3875.构造奇偶一致的数组 I
笔记·算法·leetcode
退休倒计时1 天前
【每日五题】leetcode TypeScript
算法·leetcode·职场和发展·typescript
心抵鹊1 天前
力扣每日一题:计算右侧小于当前元素的个数(hard)
算法·leetcode
鹿角片ljp1 天前
LeetCode 142:环形链表 II |HashSet 保底解 + Floyd 快慢指针找环入口
算法·leetcode·链表