題目描述:
在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
思路:利用二維數組由上到下,由左到右遞增的規律,那麼選取右上角或者左下角的元素a[row][col]與target進行比較,當target小於元素a[row][col]時,那麼target必定在元素a所在行的左邊,即col--;當target大於元素a[row][col]時,那麼target必定在元素a所在列的下邊,即row++;
代碼實現:
bool Find(int target, vector<vector<int> > array) {
if(array.size()!=0)
{
int row=0;//行從0行開始
int col=array[0].size()-1;//列從每一行的行尾開始比較
while(row<array.size()&&col>=0)
{
if(target==array[row][col])
{
return true;//找到
}
else if(target<array[row][col])
{
col--;//當target小於元素a[row][col]時,那麼target必定在元素a所在行的左邊
}
else row++;//當target大於元素a[row][col]時,那麼target必定在元素a所在列的下邊
}
}
return false;
}