记录 1 道算法题
搜索二维矩阵II
要求:提供一个二维数组,横竖都是从小到大升序,寻找一个数字,如果里面存在则返回 true,不存在返回 false。
利用数组升序的特性,我们可以从左上角找起,如果寻找的数字比当前数字小,那么他一定比当前数字下面的数字小,所以往左找。如果比当前数字大,那么说明比这一行的数字都大,所以往下找。最后会一直往左或者往下找,所以循环停止的条件就是左边界和下边界。
完整代码如下:
function searchMatrix (matrix, target) {
// x轴y轴看待
let x = martix[0].length - 1
let y = 0
while(x >= 0 && y < martrix.length) {
const m = martix[y][x]
if (target < m) {
x--
} else if (target > m) {
y++
} else {
return true
}
}
return false
}