剑指offer-01-二维数组中的查找
前端算法也很重要,受别人☛汕大小吴的启发,觉得还是自己整理记录较为清晰,同时也督促自己不断学习。
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
题目分析
第一反应是循环遍历,但耗时耗性能。
《剑指Offer》上提及一个区块划分的概念,将二维数组画成矩形,如下图所示,优先对比最右侧的数字信息,若最右侧的第一个>target,则只需要与第一行的数据比较;若=,则即找到;若<,则第一行的所有数据均排除,继续最右侧的下一个数据与target进行比较。
代码
function Find(target, array)
{
// write code here
let i = 0;
let j = array[i].length-1;
for(;i<=array.length-1&&j>=0;){
if(array[i][j]>target){
j--;
}else if(array[i][j]<target){
i++;
}else{
return true;
}
}
return false;
}