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

 

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

思路:從第一行最後一個數開始查找,要找的數大於這個數,則當前列不變,行加加;要找的數小於這個數,當前行不變,列減減;否則說明找到了。

bool Find(int target, vector<vector<int> > array) {
        
        int rows=array.size();
        int cols=array[0].size();
        
        //從第一行最後一個數據開始查找
        int i=0;
        int j=cols-1;
        
        while(i<rows && j>=0)
        {
            if(target>array[i][j])
            {
                i++;
            }
            else if(target<array[i][j])
            {
                j--;
            }
            else
            {
                return true;
            }
        }
        return false;
       }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章