二维数组的查找
题目描述:
在一个二维数组中(每一个一维数组的长度相同),每一行都按照从左到右递增的顺序排序 ,每一列都按照从上到下递增的顺序排列,请完成一个函数,输入这样一个二维数组和一个整数,判断数组中是否含有该整数。
【分析】一个特殊的矩阵,右上角的元素,向左递减,向下递增。
public boolean isExist(int num, int[][] arr) {
//首先检查数组
if(arr == null || arr.length == 0 || arr[0].length == 0) {
return false;
}
//从右上角开始,因为右上角元素向左是递减的,向下是递增的
int r = 0, c = arr[0].length - 1;
while(r <= arr.length - 1 && c > 0) {
if(arr[r][c] == num) {
return true;
} else if(arr[r][c] < num) {
//目标整数大于该元素,向下走
r++;
} else if(arr[r][c] > num) {
//目标元素小于该元素,向左走
c--;
}
}
return false;
}