题目描述:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路:
1.首先选取数组中右上角的数字
2.如果该数字等于要查找的数字,则返回true
3.如果该数字大于要查找的数字,则剔除这个数字所在的列,也就是–Col
4.如果该数字小于要查找的数字,则剔除这个数字所在的行,也就是++Row
这样每一步都可以缩小查找的范围,知道找到要查找的数字或者查找结果为空
同理,我们也可以选取左下角的数字。但是不能选择左上或者右下角的数字,这样无法缩小查找的范围。
public class Solution {
public boolean Find(int target, int [][] array) {
if(array==null||array[0]==null){
return false;
}
int r=array.length;
int c=array[0].length;
int Row=0;
int Col=c-1;
while(Row<r && Col>=0){
if(array[Row][Col]==target){
return true;
}else if(array[Row][Col]<target){
++Row;
}else{
--Col;
}
}
return false;
}
}