240.搜索二维矩阵 II

搜索二维矩阵 II

编写一个高效的算法来搜索 m x n 矩阵 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
  • $-10^9$ <= matrix[i][j] <= $10^9$
  • $-10^9$ <= target <= $10^9$

解析

从右上角开始搜索:如果当前值大于 target 则左移,小于 target 则下移。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
* @param {number[][]} matrix
* @param {number} target
* @return {boolean}
*/
var searchMatrix = function (matrix, target) {
let row = 0;
let col = matrix[0].length - 1;

while (row < matrix.length && col >= 0) {
if (matrix[row][col] === target) return true;
if (matrix[row][col] > target) {
col--;
} else {
row++;
}
}
return false;
};

从右上角出发的搜索路径类似二叉搜索树。时间复杂度 O(m+n)。


240.搜索二维矩阵 II
https://leetcode.lz5z.com/240.search-a-2d-matrix-ii/
作者
tickli
发布于
2024年7月29日
许可协议