题目
时间限制:1秒 空间限制:32768K 热度指数:1421035
本题知识点: 查找 数组
算法知识视频讲解
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路
这道题固然可以直接使用暴力法解决,但是这里就不说暴力法了
对于这道题,我们可以从左下或者右上来遍历,对于这两个位置,要么是行最大列最小,要么是列最大行最小,所以每次我们将该位置的数与目标值做比较时,就可以往列或行的其中一个方向移动,以左下为例
当数值>target时,往上移动
当数值<target时,往右移动
当数值=target时,返回true
右上同理
代码
暴力法
function Find(target, array)
{
for(let i=0;i<array.length;i++){
for(let j=0;j<array[0].length;j++){
if(array[i][j]===target){
return true;
}
}
}
return false;
}
module.exports = {
Find : Find
};
左下/右上遍历
function Find(target, array)
{
// write code here
let row=array.length-1;
let col=0;
while(row>=0&&col<array[0].length){
if(array[row][col]===target){
return true;
}else if(array[row][col]>target){
row--;
}else{
col++;
}
}
return false;
}
module.exports = {
Find : Find
};