# 240. 搜索二维矩阵 II
# 题目
编写一个高效的算法来搜索 m x n
矩阵 matrix
中的一个目标值 target
。该矩阵具有以下特性:
- 每行的元素从左到右升序排列。
- 每列的元素从上到下升序排列。
# 题解
# 矩阵特性
根据矩阵特性
初始化指针指向矩阵左下角
- 目标大于指针值,指针向右
- 目标小于指针值,指针向上
- 等于返回 true
- 越界返回 false
/**
* @param {number[][]} matrix
* @param {number} target
* @return {boolean}
*/
var searchMatrix = function(matrix, target) {
let rows = matrix.length;
let cols = matrix[0].length;
let r = rows - 1,
c = 0;
while (r < rows && r >= 0 && c >= 0 && c < cols) {
let t = matrix[r][c];
if (t == target) return true;
else if (t < target) c++;
else r--;
}
return false;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
时间复杂度:O(m+n) m n 分别为行数和列数
空间复杂度:O(1)