题目:在一个二维数组中,每行都按照从左到右递增的的顺序排序,每列都按照从上到下递增的顺序排序。请完成这样一个函数:输入这样的一个二维数组和一个整数,判断数组中是否含有改整数。
方法一:从最后一行的第一个元素开始比较,我们采用java来写:
JAVA:
public boolean searchMatrix(int[][] matrix, int target)
{
int row=matrix.length;
int column=matrix[0].length;
if(matrix==null||row<=0||column<=0)
{
return false;
}
//从坐下角开始搜索
int nCol = 0;
int nRow = row- 1;
boolean found = false;
while (nCol < column && nRow >= 0)
{
if (matrix[nRow][nCol] == target)
{
found = true;
break;
}
else if (matrix[nRow][nCol]<target)
{
nCol ++;
}
else
{
nRow --;
}
}
return found;
}
方法二:从第一行的最后一个元素开始比较,我们采用C++来写:
bool FindArray(int *pArray,int nWidth,int nheight,int nKey)
{
if (NULL == pArray || nWidth <= 0 || nheight <= 0)
{
return false;
}
int nCol = nWidth - 1;
int nRow = 0;
bool bFound = false;
while (nCol >= 0 && nRow <= nheight-1)
{
if (pArray[nRow*nWidth+nCol] == nKey)
{
bFound = true;
break;
}
else if (pArray[nRow*nWidth+nCol] < nKey)
{
nRow ++;
}
else
{
nCol --;
}
}
return bFound;
}
转载于:https://blog.51cto.com/secondscript/1581195