240. 搜索二维矩阵 II(中等)

240. 搜索二维矩阵 II

编写一个高效的算法来搜索 m xn 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

示例 1:

复制代码
输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
输出:true

示例 2:

复制代码
输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
输出:false

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= n, m <= 300
  • -109 <= matrix[i][j] <= 109
  • 每行的所有元素从左到右升序排列
  • 每列的所有元素从上到下升序排列
  • -109 <= target <= 109

最无脑的暴力解:

python 复制代码
class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        m=len(matrix)
        n=len(matrix[0])
        for i in range(m):
            for j in range(n):
                if matrix[i][j]==target: return True
        return False

就是直接遍历全矩阵,找到返回true,没找到返回false。

最优解:

python 复制代码
class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        m = len(matrix)  # 行数
        n = len(matrix[0])  # 列数
        
        i, j = 0, n-1  # 从右上角开始
        
        while i < m and j >= 0:
            if matrix[i][j] == target:
                return True
            elif matrix[i][j] < target:
                i += 1  # 当前行太小,下移
            else:
                j -= 1  # 当前列太大,左移
        
        return False

从右上角开始遍历矩阵,因为右边一列就是每一行中最大的数。如果最右边那一列的值比目标值小,那么下移找更大的,如果大那么左移找更小的。

  • 时间复杂度:O(m+n),不是 O(mn)

  • 空间复杂度:O(1)

  • 最坏情况:从右上角到左下角,走 m+n-1 步

相关推荐
tianyatest4 小时前
魔兽争霸 III 接入大语言模型:基于文件通道的混合式游戏 AI 智能体系统设计与实现
人工智能·游戏·语言模型·war3
buddyMe智能助手4 小时前
不改模型权重,让智能体自己进化:脚手架自我改良的路线图
人工智能
Fang_YuanAI4 小时前
AI反推提示词指南:12种场景反推模板,角色、插画、摄影、风景全覆盖
人工智能
Sayai4 小时前
ComfyUI+Flux ControlNet 实战:一张图拆线稿和深度图,双模型重构画面(12G 显存实测,附模型与工作流)
人工智能·重构·aigc·flux·controlnet·comfyui
墨天梦4 小时前
D21_第三周系统功能回归
人工智能·数据挖掘·回归
牛战士coding4 小时前
LLM 选错工具怎么办?提示词之外还需要确定性规则兜底
java·人工智能
虎鲸不是鱼4 小时前
【虎鲸进化论 07】给 AI 装上手和脚:MCP 协议与“给 Agent 用的工具“设计
人工智能·自动化·大模型·llm·自进化agent
invicinble4 小时前
提示词设计与维特根斯坦哲学
人工智能
MiYi124064 小时前
2026深度解读:Work Agent如何拆解复杂需求并执行长程任务
人工智能