题目描述:
解题思路:
- 暴力解决
return array.some((item) => item.some((num) => num === target));
// return array.flat().inclueds(target)
- 按照题目给的条件递增数组并且每个一维数组长度相等
先找一个对照值(矩阵中的左下角或者右上角, 这里我取的左下角), 与
target进行对比, 若较大, 则往上继续对比, 若较小, 则往右侧进行对比, 直到索引越界, 中途有找到相等值, 直接返回true, 越界后返回false。
代码如下:
if (array.length === 0) return false;
/**
* [
* [1, 3, 4, 5],
* [2, 4, 6, 8],
* [3, 6, 9, 11],
* [4, 8, 12, 15],
* [5, 10, 15, 16],
* ]
*/
//高
const rowLen = array.length;
//宽
const colLen = array[0].length;
//左下角
let i = rowLen - 1;
let j = 0;
while (i >= 0 && j <= colLen - 1) {
//当前值比 target小, 指针右移
if (array[i][j] < target) j++;
//当前值比 target 大, 指针上移
else if (array[i][j] > target) i--;
else if (array[i][j] === target) return true;
}
return false;