题目:一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。要求效率尽可能的高。
bool Find(int* array, int rows, int columns, int data)
{
bool flag = false;
if (array != NULL&&rows > 0 && columns > 0)
{
int row = 0;
int column = columns - 1;
if (data > array[0] && data < array[rows*columns + column])
{
while (row < rows&&column>=0)
{
if (array[row*columns + column] > data)
--column;
else if (array[row*columns + column] == data)
{
flag = true;
return flag;
}
else
++row;
}
}
}
return flag;
}
ps:这道题一开始想的很简单,直接按照每行每列的最大元素直接比不就好了。。。发现自己太天真了。
还是按照书上的方法写出了代码。