一、题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
输入 : 一个二维数组array和一个整数target
输出 :true / false
二、思路分析
首先选取数组右上角的数字temp,如果该数字等于要查找的数字target,查找结束;
如果该数字大于target,剔除temp所在的列;
如果小于target,剔除temp所在的行。
三、实现代码
/**
* @AUTHOR:0416
* @DESCRIPTION:
* @DATE:2019/10/16
**/
public class SearchIn2DArray {
public static Boolean searchIn2DArray(int[][] array, int target){
if(array == null){
return false;
}
int top = 0;
int right = array[0].length - 1;
while(right >= 0 && top < array.length){
int temp = array[top][right];
if(temp == target){
return true;
}else if(temp > target){
right --;
}else if(temp < target){
top ++;
}
}
return false;
}
public static void main(String[] args){
//int[][] array = {{1,2,8,9}, {2,4,9,12}, {4,7,10,13}, {6,8,11,15}};
int[][] array = {{1,2,8,9},{4,7,10,13}};
boolean result = searchIn2DArray(array, 7);
System.out.println(result);
}
}