题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
注意:
1.只能从左下角坐标或右上角坐标找起 ,比如下表的4*4数组,若target比右上角的9大,则row++去下一行找,若target比右上角角的9小,则col--去左边的列找
2.右上角的下标为初始值时,row=0,因为是第一行
用JAVA实现时,用数组的操作符,所以col=array[0].length-1;此为行号为0时,列的数量-1,即为第一行最后一列数字9的下标
用C++实现时,用的是vector求长度的函数,所以col=array[0].size()-1;
JAVA实现:
public class Solution {
public boolean Find(int target, int [][] array) {
int row = 0;
int col = array[0].length-1;
while(col>=0&&row<=array.length-1)
{
if(target==array[row][col])
{
return true;
}
else if(target>array[row][col])
{
row++;
}else{
col--;
}
}
return false;
}
}
C++实现
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
if(array.empty())
{
return false;
}
int row = 0;
int col = array[0].size()-1;//为0,列号为行号为0时的列数-1,因为数组下标是从0开始的
while(row<=array.size()-1&&col>=0)
{
if(target==array[row][col])
{
return true;
}else if(target<array[row][col])
{
col--;
}else{
row++;
}
}
return false;
}
};