public class Solution { public boolean Find(int target, int [][] array) { //关键是选择从右上角或者左下角开始找。不能从左上角开始找 //这道题中,我选择从右上角开始找 if(array == null || array.length == 0){ return false; } for(int i = 0; i < array.length; i++){ int[] inner = array[i]; for(int j = inner.length-1 ; j > -1; j--){ if(target == inner[j]){ return true; } else if(target > inner [j]){ //如果找的这个数比当前的还大,证明这一行中没有目标值 //直接跳出本次内循环,去判断下一行的数 break; } // 下面这段代码也不用要,因为这种情况的时候就是进行下一次循环 // else if(target < inner [j]){ // continue; // } } } return false; } }