矩陣找數--一個m*n的矩陣,從左到右從上到下都是遞增的,給一個數x,判斷x是否在矩陣中。要求效率儘可能的高。
阿新 • • 發佈:2018-12-24
思路一:迴圈找
效率差
思路二:
因為從左到右從上到下都是遞增的。
所以用數字和右上角的數字比較
如果要找的數字是7,則數字先與9比。比9小說明在9的左側。
再與8比,比8小,說明在8的左側。
與2比,比2大,在2的下側。
比4大,在4的下側。
bool Find(int * arr,int row,int col,int num)
{
bool isFound = false;
if(arr != NULL && row > 0&&col > 0)
{
int CurRow = 0 ;
int CurCol = col-1;
while(row < CurRow && CurCol >= 0)
{
//如果找到了,直接返回
if(arr[CurRow * col + CurCol] == num)
{
isFound = true;
break;
}
//如果右上角數字大於num,在右上角數字的左邊
else if(arr[CurRow * col + CurCol] > num)
--CurCol;
//否則在下面
else
++CurRow;
}
}
return isFound;
}