题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解法:从数组的左上角开始查找, target比右上角的数字小,则可以排除最后一列数字;如果比右上角大,则排除第一行。
public class Solution {
public boolean Find(int target, int [][] array) {
int rowLen = array.length;//行数
int colLen = array[0].length;//列数
for (int i = 0; colLen >= 1 && i < rowLen;) {
if(target < array[i][colLen-1]){//从右上角的数开始比
colLen--;//排除此时最右边一列
}else if(target > array[i][colLen-1]){
i++;//排除此时最上边一行
}else {
return true;
}
}
return false;
}
}