题目:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:
矩阵是有序v的,向下递增,向右递增,如果从左下角来看,向上的数越来越小,向右越来越大,因此,查找一个数,先从左下角比较,如果查找的数比左下角数小时,需要向上移,查找的数比左下角的数大,向右移。
例如:
public class Solution {
public boolean Find(int target, int [][] array) {
int rows = array.length;
int cols = array[0].length;
int i = rows-1; //行
int j = 0; // 列
while(i>=0 && j< cols){
if(array[i][j]<target){ //查找的数字大于左下角的数字,需要向右找
j++;
}
else if(array[i][j]>target){ // 查找的数字小于左下角数字,需要向上找
i--;
}
else //查找数字等于左下角数,找到了
return true;
}
return false;
}
}