题解 | #二维数组中的查找#
二维数组中的查找
http://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e
使用二分查找,对于这种二维数组的二分查找,我们可以从右上角或者坐下开始,这里以右上角为例: 如果右上角的值大于要查找的值,那么肯定最后一列的值都大于,我们可以缩小查找范围到前面的列;如果右上角的值小于要查找的值,可以肯定这一行的值都小于,可以缩小查找范围到下面列。重复上面步骤,知道找到数据或者数组遍历完成。
public boolean Find(int target, int [][] array) {
int i=0;
int j=array[0].length-1;
while(i<array.length&&j>=0){
if(array[i][j]>target){
j--;
}else if(array[i][j]<target){
i++;
}else{
return true;
}
}
return false;
}
}