题解 | #二维数组中的查找#
二维数组中的查找
http://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e
从第一行找到第一个比他大的数,然后尽量向下,向左去找,边界条件好难处理。。。。
public class Solution {
public boolean Find(int target, int [][] array) {
if(array[0].length == 0){
return false;
}
int i;
int[][] matrix=array;
int row=0,list=0;
if(array.length == 1){
for(i =0 ;i < matrix[0].length;i++){
if(matrix[0][i] ==target){
return true;
}
}
return false;
}
for(i =0 ;i < matrix[0].length;i++){
if(matrix[0][i] >=target){
if(matrix[0][i] ==target){
return true;
}
list = i;
break;
}
}
if(i == matrix[0].length){
list = i-1;
}
while(true){
if(row+1 < matrix.length && matrix[row+1][list] == target){
return true;
}
if(matrix[row+1][list] < target){
row ++;
}
else{
list --;
}
if(list < 0 || row >= matrix.length-1){
break;
}
}
return false;
}
}