题目:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二位数组和一个整数,判断该数组中是否含有该整数。
代码实现:
bool FindDataInMetrix(int* pData, int maxRow/*从1开始*/, int maxCol/*从1开始*/, int destData)
{
if (nullptr == pData || maxRow < 1 || maxCol < 1) return false;
// [curRow, curCol]为左上角
int curRow = 0;
int curCol = maxCol - 1;
while (curCol <= maxRow - 1 && curCol >= 0)
{
int curData = pData[curRow * maxRow + curCol]; // 通过curRow、curCol获取下标
if (destData == curData) return true;
else if (destData < curData) --curCol; // 往左
else ++curRow; // 往下
}
return false;
}