题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:
数组是从左到右、从上到下递增顺序的,那么可以想到的是最小数在array[0][0],最大数在array[row][clo]中,我们想要找到数组是否存在target,那么可以在选择左下角或者右上角最为比较
public class Solution {
public boolean Find(int target, int [][] array) {
int rows = array.length;
int clos = array[0].length;
int i=0;
while((rows>0) && (i<clos)){
// target < array[eows-1][i], 那么就向上走
if(target<array[rows-1][i]){
rows--;
// 否则就向右走
}else if(target>array[rows-1][i]){
i++;
// 相等直接返回true
}else{
return true;
}
}
// 遍历完仍未找到,返回false
return false;
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容