package com.offer.cn; public class Solution { public static boolean find(int target, int [][] array) { int rows=array.length; int columns=array[0].length;//这里计算数组的列数 boolean found=false; //首先要判断数组是否存在 if(array !=null && rows >0 && columns >0){ //本题的重点 由于矩阵是个有序矩阵,一定要从左下角或者右上角进行开始循环判断,这样才能达到缩小查找范围的目的 int row =rows-1; int column=0; while(column<=columns-1){ int tempValue=array[row][column]; if(target > tempValue){ column++; }else if(target < tempValue){ if(row-1 < 0){ break; }else{ row--; } }else{ found=true; break; } } } return found; } public static void main(String[] args) { int [][] a = new int [][]{{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}}; System.out.println(find(-5, a)); } } 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15