在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路1:while循环row<=array.length-1&&col>=0行小于等于数组长度,列大于等于0,从左下角的数arr[1][0],或者右上角arr[0][j]---(j=arr[0].length-1)和target比较。如果大于target说明在第一行左边,小于target说明在第二行右边
function Find(target, array)
{
// write code here
var row=0;
var col=array[0].length-1;
while(row<=array.length-1&&col>=0){
if(target==array[row][col]){
return true;
}else if(target>array[row][col]){
row++;
}else{
col--;
}
}
return false;
}
module.exports = {
Find : Find
};
思路2:二分查找,遍历array的长度,设为行数。
每行找到0和length-1;找到mid
while循环()
用每行的array[i][mid]和target比较。如果小于target,说明在右半部份,low变大mid+1
如果大于target,说明在左半部分,high变小mid-1.
function Find(target, array)
{
// write code here
for(var i=0;i<array.length;i++){
var low=0;
var high=array[i].length-1;
while(low<=high){
var mid=(low+high)/2;
if(target==array[i][mid]){
return true;
}else if(target>array[i][mid]){
low=mid+1;
}else{
high=mid-1;
}
}
return false;
}
}