二維有序數組查找給定值

題目描述

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

解題思路

次數組爲有序數組,所以我們可以有兩個入口點:(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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章