题目:在一个二维数组中,每一行按照从左到右递增的顺序排序,每一列按照从上到下的递增顺序排序。完成一个函数,输入这样的二维数组和一个整数,判断数组中是否有该整数。
解法一:从右上角开始处理
bool Find(int* matrix, int rows, int columns, int number)
{
bool found = false;
if(matrix != NULL && rows > 0 && columns > 0)
{
int row = 0;
int column = columns - 1;
while(row < rows && column >=0)
{
if(matrix[row * columns + column] == number)
{
found = true;
break;
}
else if(matrix[row * columns + column] > number)
-- column;
else
++ row;
}
}
return found;
}
解法二:从左下角开始处理
bool FindFromLD(int *matrix, int rows, int columns,int number)
{
bool found=false;
if(matrix!=NULL&&rows>0&&columns>0)
{
int row=rows-1;
int column=0;
while(row>=0&&column<=columns-1)
{
if(matrix[row*columns+column]==number)
{
found=true;
break;
}
else if(matrix[row*columns+column]>number)
row--;
else column++;
}
}
return found;
}
参考:剑指offer 面试题3