题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:
* 矩阵是有序的,从左下角来看,向上数字递减,向右数字递增。因此可以选择左下角元素或者是右上角元素开始。 (若从左上角元素[或者是右下角元素]开始比较,target比当前元素大时,可往右移,可往左移,没法判断选择)
* 因此从左下角开始查找,当要查找数字比左下角数字大时--->右移
* 要查找数字比左下角数字小时--->上移
public class Solution {
public boolean Find(int target, int [][] array) {
int row = array.length - 1;//二维数组的行数
int col = array[0].length - 1;//二维数组的列数
int i = 0;
int j = row;
while(j >= 0 && i <= col)
{
if(target > array[j][i])//target比当前值大,向右移动
{
i++;
}
else if(target < array[j][i])//target比当前值小,向上移动
{
j--;
}
else
return true;
}
return false;
}
}