题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
实现思路
从右上角或者左下角的数字开始查找,则每一次都可以在数组的查找范围中排除一行或者一列,这样就可以一步步缩小查找范围,直到查找到要找的数字或者查找范围为空。
js中多维数组是以嵌套的方式定义的,所以行数即为数组长度,列数为任意一个子数组的长度
实现代码:
for循环
function findRepeat(target, array){
let row = array.length;
let col = array[0].length;
for (let i =0; i < row; i ++) {
for (let j = col -1; j >=0; j --) {
if(array[i][j] > target){
continue;
}else if(array[i][j] < target){
break;
}else{
return true;
}
}
}
return false;
}
while循环
function findRepeat1(target, array){
let row = array.length;
let col = array[0].length;
let i = row - 1;
let j = 0;
while (i >= 0 && j <= col - 1){
if(array[i][j] > target){
i --;
}else if(array[i][j] < target){
j ++;
}else{
return true;
}
}
return false;
}