总结:
1.可以从右上角或左下角开始查找target,如果相等返回true;如果当前值大于target,那就删除这一列元素;如果当前值小于target,那就删除这一行元素。之所以是右上角或左下角,是因为从这两个位置查找,缩小范围才不会有重复部分,简化了查找。
2.还要考虑数组为空的情况
public class Solution {
public boolean Find(int target, int [][] array) {
int row = array.length;
int col = array[0].length;
if(row==0&&col==0)
return false;
int rowIndex = 0,colIndex = col-1;
while(rowIndex>=0&&rowIndex<row&&colIndex>=0&&colIndex<col){
if(array[rowIndex][colIndex]==target)
return true;
else if(array[rowIndex][colIndex]>target){
colIndex = colIndex-1;
}else{
rowIndex = rowIndex+1;
}
}
return false;
}
}
京公网安备 11010502036488号