文章目錄
在二維數組中查找
在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
利用該二維數組的性質:
- 每一行都按照從左到右遞增的順序排序,
- 每一列都按照從上到下遞增的順序排序
所以,對於左下角的值 m,它是該行最小的數,又是該列最大的數。可以從這裏開始比較,按行按列前進。
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int m(array.size()), n(array[0].size());
if(m==0 or n==0) return false;
int i(m-1), j(0);
while(i>=0 && j<n){
if(target == array[i][j]) return true;
if(target > array[i][j]) j++;
if(target < array[i][j]) i--;
}
return false;
}
};