js算法实现_二维数组中的查找
题目:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
分析:
数组中任意找一个数,它的左边都小于它,它的下边都大于它。如果要找的数(target)大于这个数,那就向下找;小于这个数就向左找。那么我们应该取哪个数与target做比较呢?首先我们先想到是数组四个角的数,第一个数和最后一个数都不行(因为他们右下或左上与它们的关系是一样的,要么都大于它,要么都小于它,这样我们没法做上面的判断);所以我们可以取右上角或者左下角的数开始判断,下面就是代码:
方法1:选取右上角的数为初始判断点
function Find(target, array)
{
// write code here
var row=array.length,
col=array[0].length,
i=0,
j=col-1;
while(i<row&&j>=0){
if(array[i][j]>target){
j--;
continue;
}else if(array[i][j]<target){
i++;
continue;
}else{
return true;
}
return false;
}
}方法二:选取左下角的数为初始判断点
function Find(target, array)
{
// write code here
var row=array.length,
col=array[0].length,
i=row-1,
j=0;
while(i>=0&&j<col){
if(array[i][j]>target){
i--;
continue;
}else if(array[i][j]<target){
j++;
continue;
}else{
return true;
}
return false;
}
}本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!