劍指offer 二維數(shù)組中的查找
標(biāo)簽:
JavaScript
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
这道题借鉴了别人的思想 ,想明白之后,自己敲出来了。
解题思路是:这是一个二维有序数组,如果我们要在这里面找到目标值,共有四个角可以作为切入点,但是左上角和右下角有同样的问题,在判断之后又分岔路的问题,这两个角,两个方向上都是增大的,对于我们解题没有任何益处。但是左下角和右上角,在判断之后可以选择一条路进行下面的判断,本例中以左下角为 例,如果左下角的那个值大于目标值,那么说明目标值小,那么我们此时应该让行递减,如果左下角那个值小于目标值,那么说明目标值大,那么我们此时应该让列递增。
在明晰了思路之后,开始code
var a=[[1,2,3],[4,5,6],[7,8,9]]
function Find(arr,target){
var hang=arr.length; //行
var lie=arr[0].length; //列
// 将位置定位到左下角
var i=hang-1
var j=0;
//如果行列都等于零,就没必要判断啦
if(hang===0&&lie===0){
return false;
}
while(i>=0&&j<=lie-1){
// 如果左下角的值大于需要找的目标值,那么就应该向上走,此时行应该减少
if(a[i][j]>target){
i--;
}
// 如果左下角的值小于需要找的目标值,那么就应该向左走 此时列应该增加
else if(a[i][j]<target){
j++;
}
else{
console.log(i,j);
}
}
//如果此时i递减到小于0或者j递增到大于lie-1,就说明没找到
if(i<0||j>lie-1){
return false;
}
}
Find(a,5)
點擊查看更多內(nèi)容
為 TA 點贊
評論
評論
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦