总结:
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; } }