题目
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
程序
var a=[[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]]
console.log(a)
/*循环遍历,最基本的方法,返回位置的时候,可以转换成字符串,复杂度n^2*/
function checke1(key ,arr) {
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr[i].length;j++){
if (key==arr[i][j]){
var str='('+i.toString()+','+j.toString()+')'
return str;
}
}
}
return false;
}
/*根据矩阵的性质,复杂度会降低,具体降低到n*/
/*先判断左下角元素是否是要查找的元素,如果是,返回,如果要查找的元素比该位置大,往后移,如果要查找的元素比这个小,向上移*/
function check2(key,arr){
var row=arr.length-1;
for(var i=row,j=0;i>=0&&j<arr[i].length;){
if(key==arr[i][j]){
return true;
} else if (key>arr[i][j]){
j++;
continue;
} else if(key<arr[i][j]){
i--;
continue;
}
}
return false;
}
console.log(check2(3,a))