C++刷題筆記:數組


在二維數組中查找

在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。

利用該二維數組的性質:

  • 每一行都按照從左到右遞增的順序排序,
  • 每一列都按照從上到下遞增的順序排序

所以,對於左下角的值 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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章