二維數組中的查找

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

分析:數組左上角的元素最小,右下角的元素最大,開始比較時從左下角或右上角開始,每次可以丟掉一行或一列

//從左下角開始
bool Find(vector<vector<int> >array,int target){
    int rows=array.size();
    int cols=array[0].size();
    int i=rows-1;
    int j=0;
    while(i>=0 && j<cols){
        if(array[i][j]==target){
            return true;
        }else if(array[i][j]<target){
            j++;
        }else{
            i--;
        }
    }
    return false;
}

//從右上角開始
bool Find1(vector<vector<int> >array,int target){
    int rows = array.size();
    int cols = array[0].size();
    int i=0;
    int j=cols-1;
    while(i<rows && j>=0){
        if(array[i][j]==target){
            return true;
        }else if(array[i][j]<target){
            i++;
        }else{
            j--;
        }
    }
    return false;
}


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