二维数组中的查找
题目描述:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
解析:
数组是有序数组,从左到右、从上到下依次递增。选取矩阵左上、右上、左下、右下四个特殊点分析,将它们作为比较的起始点,矩阵中其他数字均比左上点大,比较时无法按规律遍历,右下点也同理。
这里我们以左下点为例:当需要查询的数字小于当前坐标下的数值时坐标上移,大于时坐标右移。当坐标超出范围即查找失败。
java版代码如下:
public class Solution {
public boolean Find(int target, int array) {
int i = array.length-1 ;
int j = 0 ;
while( i >=0 && j < array[0].length ){
if( array[i][j] > target){
i-- ;
}
else if( array[i][j] < target){
j++ ;
}else{
return true ;
}
}
return false ;
}
}