題目:在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
分析:數組左上角的元素最小,右下角的元素最大,開始比較時從左下角或右上角開始,每次可以丟掉一行或一列
//從左下角開始
bool Find(vector<vector<int> >array,int target){
int rows=array.size();
int cols=array[0].size();
int i=rows-1;
int j=0;
while(i>=0 && j<cols){
if(array[i][j]==target){
return true;
}else if(array[i][j]<target){
j++;
}else{
i--;
}
}
return false;
}
//從右上角開始
bool Find1(vector<vector<int> >array,int target){
int rows = array.size();
int cols = array[0].size();
int i=0;
int j=cols-1;
while(i<rows && j>=0){
if(array[i][j]==target){
return true;
}else if(array[i][j]<target){
i++;
}else{
j--;
}
}
return false;
}