題目描述
在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
解題思路
次數組爲有序數組,所以我們可以有兩個入口點:(1)左下角【左下角的元素規律是往上走是遞減,往右走是遞增】(2)右上角【右上角的元素規律是往左依次遞減,往下遞增】。那麼我們可以依據這兩個切入點對元素進行比較。本題從左下角入手。
class Solution {
public:
bool Find(vector<vector<int> > array,int target) {
//獲取數組行數
int row=array.size();
//獲取數組列數
int col=array[0].size();
//定義左下角的下標
int up=row-1;
int right=0;
//避免數組越界
while(up>=0&&right<col){
if(array[up][right]==target){
return true;
}
if(array[up][right]<target){
right++;
continue;
}
if(array[up][right]>target){
up--;
continue;
}
}
return false;
}
};