Leetcode: 搜索二维矩阵 II

20 阅读2分钟

原题:leetcode.cn/problems/se…

题目描述

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

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

解题思路

  1. 对角线起点选择
    • 从右上角(或左下角)开始搜索
    • 利用行列有序特性缩小范围
  2. 决策路径优化
    • 当前值 < target → 下移(排除当前行)
    • 当前值 > target → 左移(排除当前列)
    • 当前值 = target → 返回成功
  3. 边界终止条件
    • 行索引超出矩阵底部
    • 列索引超出矩阵左边界
  4. 方向特性利用
    • 右上角:左小下大
    • 左下角:右小上大

关键洞察

  1. 矩阵特性利用
    • 行列方向独立有序
    • 对角线形成阶梯状递增
  2. 搜索路径最优性
    • 每次移动排除一行/列
    • 避免无效区域扫描
  3. 起点选择优势
    • 右上角/左下角是决策枢纽点
    • 提供最大比较信息
  4. 无回溯机制
    • 移动路径是单向收敛的
    • 不会遗漏可能区域

复杂度分析

指标说明
时间复杂度O(m+n):最坏情况遍历一行一列长度之和
空间复杂度O(1):仅使用常数额外变量

代码实现

/**
 * @param {number[][]} matrix
 * @param {number} target
 * @return {boolean}
 */
var searchMatrix = function (matrix, target) {
    const m = matrix.length;
    const n = matrix[0].length;

    let x = 0, y = n - 1;

    while (x < m && y >= 0) {
        if (matrix[x][y] === target) return true;
        if (matrix[x][y] > target) {
            y--;
        } else {
            x++;
        }
    }

    return false
};

实际应用场景

  1. 电商系统:商品价格-库存矩阵中查找特定组合`
  2. 地理信息系统:海拔矩阵中搜索特定高度区域`
  3. 图像处理:在有序像素矩阵中定位特定颜色值

相似题目