在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。时间限制:1秒 空间限制:32768K
/*
* 题目描述:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,
每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一
个整数,判断数组中是否含有该整数。
*/
public class Main {
//原始思路:从二维数组起始位置开始搜索,最坏情况,该数不存在数组中或者存在最后一个位置。时间复杂度为O(n^2)
//该二维数组每一行递增,每一列递增。所以我们找左下角位置,向上递减,向右递增,时间复杂度就会降低
//运行时间:190ms 占用内存:17432k
public static boolean getnumber(int[][] array,int target) {
for(int i=array.length-1,j=0;i>=0&&j<array[0].length;) {
if(array[i][j]==target) {
return true;
}else {
if(target>array[i][j]) {
j++;
}else {
i--;
}
}
}
return false;
}
}