/**
* 面试题4:二位数组中的查找
* 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:从右上角或左下角开始找,逐行删除,或者用二分法查找
* @author juaner
*/
public class FindNum {
public static void main(String[] args) {
FindNum fn = new FindNum();
int [][] array = {{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};
System.out.println("最大值15: " + fn.find(15, array));
System.out.println("最小值1: " + fn.find(1, array));
System.out.println("中间值10: " + fn.find(10, array));
System.out.println("无值16: " + fn.find(16, array));
}
//从右上角开始查找
public boolean find(int target, int [][] array) {
if(array == null) {
return false;
}
int row = 0;
int column = array[0].length - 1;
while (row < array.length && column >= 0) {
if (array[row][column] == target) {//相等,查找过程结束
return true;
} else if (array[row][column] > target) {//如果该数字大于要查找的数字,则剔除这个数字所在的列
column--;
} else {//如果该数字小于要查找的数字,则剔除这个数字所在的行
row++;
}
}
return false;
}
}
面试题4:二位数组中的查找
最新推荐文章于 2022-11-16 14:27:11 发布