搜索二维矩阵
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。
示例:
输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
输出:true
1
2
2
/**
* @param {number[][]} matrix
* @param {number} target
* @return {boolean}
*/
var searchMatrix = function(matrix, target) {
let l = 0
let r = matrix.length - 1
let mid
while(l <= r) {
mid = Math.floor((l + r)/2)
if(target > matrix[mid][0]) {
l = l + 1
}else if (target < matrix[mid][0]) {
r = r - 1
} else {
return true
}
}
if(mid !== 0) {
return matrix[mid].includes(target) || matrix[mid - 1].includes(target)
} else {
return matrix[mid].includes(target)
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/search-a-2d-matrix