每次排除一行,或者一列,直接用两个二分法,一次排除半行或半列
public class Optimization { public boolean searchMatrix(int[][] matrix, int target) { int x = 0; int y = matrix[x].length-1;//从右上角开始检查 while(x < matrix.length && y >= 0){//越界后退出 if(matrix[x][y] == target){//找到返回true return true; }else if(matrix[x][y] > target){//比目标值大,因为已经在最右边,所以列减一个,找到比其小的那一列 y -= 1; }else{//已经到了这一列,此时在第0行,比其小,行加一 x += 1; } } return false; } }