import java.util.*; public class Solution { // 因为二维数组在行和列上都是递增的,所以可以考虑矩形的特殊性 // 左下角元素大于它上面的小于它右边的,右上角大于它左边的小于它下面的 // 所以可以通过类似走楼梯的方式,从左下或者右上开始查找 public boolean Find (int target, int[][] array) { // write code here if(array.length == 0) return false; if(array[0].length == 0) return false; if(target == array[array.length - 1][array[0].length - 1] || target == array[0][0]){ System.out.println(array[array.length - 1][array[0].length - 1]); return true; } // 从左下开始,循环结束的判断条件是当前位置的元素索引没有越过矩阵 for(int i = array.length - 1, j = 0; i >= 0 && j < array[0].length - 1;){ // 元素较大,往上走 if(array[i][j] > target){ i--; }else if(array[i][j] < target){ j++; }else{ return true; } } return false; } }