二维数组中的查找
题目描述
题目地址:http://mtw.so/6jl10Z
题目要求:
在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
[
[1,2,8,9],
[2,4,9,12],
[4,7,10,13],
[6,8,11,15]
]
给定 target = 7,返回 true。
给定 target = 3,返回 false。
解题思路
- 拿到题,首先我想到的是for循环遍历,一个一个进行判断,但是这样效率不高,所以我们可以从右上角遍历,如果target比当前大,向下一行,小,向左一列 ,虽然也用for循环,但是效率更高
- 定义两个变量,记录数组的长度和数组第一个元素的长度
- 定义x是数组第一个元素的最后的一个元素
- continue的作用:当只有一层时,满足if条件执行y++变为1,下一个if判断会报错,所以要中断本次循环
解题代码
function Find(target, array)
{
let Y = array.length
let X = array[0].length
for(let x = array[0].length-1 ,y=0;x>=0&&y<Y;){
if(target>array[y][x]){y++;continue}
if(target<array[y][x]){x--}
else{return true}
}
return false
}
module.exports = {
Find : Find
};