- 在一個(gè)二維數(shù)組中壮不,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序注祖。請(qǐng)完成一個(gè)函數(shù)猾蒂,輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù),判斷數(shù)組中是否含有該整數(shù)
解題思路
代碼
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
if(array.empty()){
return false;
}
int rows = array.size();
int cols = array[0].size();
// 從右上角開(kāi)始向左下方查找
int i = 0;
int j = cols - 1;
while(i < rows && j >= 0){
if(array[i][j] == target){
return true;
break;
}
else if(array[i][j] < target){
i++;
}
else{
j--;
}
}
return false;
}
};
總結(jié)展望
遺留問(wèn)題
- 下面代碼是晨,左思右想沒(méi)問(wèn)題肚菠,沒(méi)想到竟然報(bào)錯(cuò),留待以后解決吧
- 目前想法是有可能遞歸太多導(dǎo)致超時(shí)
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
if(array.empty()){
return false;
}
int rows = array.size();
int cols = array[0].size();
return core(0, 0, rows, cols, array, target);
}
bool core(int x, int y, int rows, int cols, vector<vector<int> >& array, int target){
bool you = false;
bool xia = false;
if(array[x][y] == target){
return true;
}
else{
// 向右
if(y+1 < cols && array[x][y] < target){
you = core(x, y+1, rows, cols, array, target);
}
// 向下
if(x+1 < rows && array[x][y] < target){
xia = core(x+1, y, rows, cols, array, target);
}
return you || xia;
}
}
};
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者