二维数组中的查找
时间复杂度:O(n^2)
空间复杂度:O(1)
function Find(target, array)
{
// write code here
for(var i=0;i<array.length;i++){
for(var j=0;j<array[i].length;j++){
if(target==array[i][j]){
return true;
}
}
}
return false;
}
更新
从左上角或者右下角开始查找都很麻烦,从左下角开始,第一个数字是每一行最小的数字&每一列最大的数字,如果小于这个数字,就可以整体上移一行i–,如果大于这个数字,就可以整体右移一列j++。
右上角同理。
时间复杂度:O(行高 + 列宽)O(行高+列宽)
空间复杂度:O(1)O(1)
function Find(target, array)
{
// write code here
var rol=array.length;//行数
var col=array[0].length;//每个一维数组长度相同,列数
if(rol==0||col==0){
return false;//数组无数据
}
if(target<array[0][0]||target>array[rol-1][col-1]){
return false;//小于最小,大于最大,不存在
}
//从左下开始查找
var i=rol-1;
var j=0;
while(i>=0 && j<col){
if(target==array[i][j]){
return true;
}else if(target>array[i][j]){
j++;
}else{
i--;
}
}
return false;
}