剑指offer:二维数组中的查找

来源:互联网 发布:lena藤井莉娜的淘宝店 编辑:程序博客网 时间:2024/06/06 02:07

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
例如:1 2 8 9
2 4 9 12
4 7 10 13
6 8 11 15
要找的数是7.
因为二维数组每行从左向右递增,每列从上到下递增,我们可以先和右上角的9比,7<9,说明9所在列都比7大,就可以去除9所在列;接着和右上角的8比,发现7<8,则去除8所在列;7与2相比,7>2,说明7 要不在2的下方要不在2的右方,因为2的右方两列都去除了,则7一定在2的下方,又因为行是从左至右递增的,就可以去除2所在行;7与4相比,7>4,去除4说在行;7与7比等于,查询完毕。
代码如下:
public class Solution{
public boolean Find(int target,int[][] array){
int row=0;
int col=array[0].length-1;
while(row<=array.length-1&&col>=0){
if(target==array[row][col])
return true;
else if(target>array[row][col]){
row++;
}else{
col–;
}
}
return false;
}

}