闲来无事,刷一刷题,思路是从左下到右上进行查找,因为首先数组是有序的,所以左下到右上这条线的数据的特征是:当前行中最小的,同时又是当前列中最大的,所以可以用这条线上的值进行比较大小,从而排除一行或一列的信息,所以效率相对较高。代码写的教随意,见谅
public class Solution {
public static boolean Find(int target, int [][] array) {
//123
//456
//789
//从左下到右上的想法吧
int x= array.length;
int y= array[0].length;
System.out.println(x);
System.out.println(y);
int i=array.length-1;
int j=0;
while(i>=0 && j<y) {
if(array[i][j] >target) {
i--;
}else if(array[i][j] <target) {
j++;
}else {
return true;
}
}
return false;
}
}