public class Find {
/**
* 思路:先选取二位数字右上角的数字进行比较
* 如果相等,则结束查找
* 如果右上角数字小于要查找的数字,则排除右上角数字所在的行
* 如果右上角数字大于要查找的数字,则排除右上角数字所在的列
*/
private static boolean find(int[][] arr,int val){
int column = arr[0].length - 1;//列的变化 arr[0].length - 1 -> 0
int row = 0; //行的变化 0 -> arr.length
while (column > 0 && row < arr.length){
if (arr[row][column] == val)
return true;
else if (arr[row][column] > val)
column--;
else
row++;
}
return false;
}
public static void main(String[] args) {
int[][] arr = new int[][]{{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,22,15}};
System.out.println(find(arr,7));
System.out.println(find(arr,5));
}
result:
true
false
网友评论