劍指offer:二維數組中的查找(數組)

題目描述

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

分析:

1 2 3

4 5 6

7 8 9

從二維數組最右上角的數值(3)開始比較,若目標比該數大,則目標肯定在該數的下方,反之,在該數的左方。根據此規則,尋找下一個比較的數值,重複以上規則,直到找到目標數,或者數組越界。


代碼:

bool Find(vector<vector<int> > array,int target) {
        if(array.empty()) return false;
        int rows = array.size();
        int columns = array[0].size();
        bool found = false;
        int x = 0, y = columns - 1;
        while(x>=0 && x < rows && y >=0 && y < columns){
            if(array[x][y] == target){
                return true;
            }
            if(array[x][y] > target) y--;
            if(array[x][y] < target) x++;
        }
        return found;
    }


發佈了75 篇原創文章 · 獲贊 5 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章