二维数组查找 java
题目描述:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路:
从数组的右上角(左下角)开始查找
- 如果要查找的数字小于右上角,则行数减1,即去掉右上角所在列
- 如果要查找的数字大于右上角,则列数加1,即去掉右上角所在列
- 如果要查找的数字等于右上角,返回
左上角同理,就不再赘述了。
图示:
java实现:
public boolean Find(int target, int [][] array) {
int rows = array.length - 1,cols = array[0].length - 1,firstrows = 0;
boolean flag = false;
if(rows<=0 || cols<=0)
System.out.println("数组为空");
else {
while(firstrows <= rows && cols >= 0) {
if(array[firstrows][cols]>target)
--cols;
else if(array[firstrows][cols]<target)
++firstrows;
else {
flag = true;
break;
}
}
}
if(flag==false)
return false;
else
return true;
}
牛客提交: