在一个二维数组中(每个一维数组的长度相同),且数据每一行从左到右递增,从上到下递增。请编写一个函数,输入一个二维数组和一个整数,判断数组中是否有此整数。

分析:如果从左上角第一个数开始的话,往右和往下数都比它大,假设已给的数比它大的话,它不知道该从哪个方向搜索;若从左下角开始的话,往上搜索是比它小的数,往右搜索是比它大的数,故从这个数开始搜索比较好;右上角和右下角以此类推,故选择左下角和右上角是最好的策略。以右上角为例,代码如下:
public class Solution {
public boolean Find(int target, int [][] array) {
if(array.length==0 || array[0].length==0)
return false;
int m = array[0].length-1;
int n = 0;
int temp = array[n][m];
while(target != temp){
if(m>0 && n<array.length-1){
if(target>temp){
n = n + 1;
}else if(target<temp){
m = m - 1;
}
temp = array[n][m];
}else{
return false;
}
}
return true;
}
}
原文地址:https://www.weiweiblog.cn/find2array/