4.二维数组中的查找
- 题目描述:给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。
- 解题思路:该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此选定右上角为基准,将数与基准比较,然后对应加减行列
public static boolean find(int target, int[][] arr){
if(arr == null || arr.length == 0 || arr[0].length == 0)
return false;
int rows = arr.length - 1, cols = arr[0].length - 1;
int r = 0, c = cols;
while(r <= rows && c >= 0){
if(target == arr[r][c])
return true;
else if(target < arr[r][c])
c--;
else
r++;
}
return false;
}