劍指 Offer 04. 二維陣列中的查詢

Alezzzzzz發表於2020-09-24

最近刷了一些easy難度的陣列題,嘗試一下劍指裡的陣列題。

該題給出一個n*m的二維陣列,給出一個int 數target,要求遍歷二維陣列,若陣列中有target,則返回true,若沒有,則返回false。首先使用暴力解法,兩層迴圈,分別對每一行與每一列遍歷,若發現target,則返回true,若沒有,則返回false。程式碼如下:

class Solution {
public:
    bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
        int m = matrix.size(); //檢測矩陣行數
        int n; //n為矩陣列數
        if (m == 0) return false; //若矩陣為空,則返回 false
        else n = matrix[0].size(); //檢測矩陣列數
        for (int i = 0; i < m; ++i)
        {
            for (int j = 0; j< n; ++j)
            {
                if(target == matrix[i][j]) return true;
            }
        }
        return false;
        }
    
};

這段程式碼時間複雜度 O(nm)。

相關文章