题目
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。剑指offer面试题4
代码
public class Solution {
public boolean Find(int target, int [][] array) {
if(array==null || array.length==0||array[0].length==0){
return false;
}
int rows = array.length;
int cols = array[0].length;
int i =0;
int j = cols-1;
while(i<=rows-1&& j>=0){
if(array[i][j]>target){
j--;
}else if(array[i][j]<target){
i++;
}else{
return true;
}
}
return false;
}
}
思路
- 此二维数组具有的特性是从左至右递增,从上往下递增
- 从数组右上角开始考虑,如果该数比目标数大,说明该数所在列下面的数都比该数大,则可以排除该列;如果该数比目标数小,说明该数所在行左边的数都比该数小,则可以排除该行;如果相等,则返回true
- 如果最后没有找到相应的数,执行到程序末尾,返回false