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

2022-06-06 12:33:10 字數 834 閱讀 8705

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

現有矩陣 matrix 如下:

[[1, 4, 7, 11, 15],

[2, 5, 8, 12, 19],

[3, 6, 9, 16, 22],

[10, 13, 14, 17, 24],

[18, 21, 23, 26, 30]

]給定 target = 5,返回 true。

給定 target = 20,返回 false。

class solution 

return 0;

}};

根據題目給出的遞增遞減規律可以看出,越靠右上越大,故我們可以從右上或者左下出發。題解從右上角出發,當目標值大於矩陣當前值時,刪除對應行,反之則刪除對應列。

我們還可以從另乙個角度看這個問題。從矩陣右上角或左下角出發,我們可以將該矩陣看作乙個二叉查詢樹。按照樹查詢的思路可以解決這一問題,**同上思路。時間複雜度\(o(m + n)\)。

class solution 

private:

bool recur(vector>& matrix, int target, int x1, int y1, int x2, int y2) else

return false;

}};

類似一維陣列的二分查詢每次可以排除1/2的區域,二維陣列的四分查詢每次可以排除1/4的區域。

劍指offer04 二維陣列查詢

在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。測試示例 矩陣 matrix 如下 begin 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 ...

劍指Offer04 二維陣列中的查詢

在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個高效的函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。現有矩陣 matrix 如下 1,4,7,11,15 2,5,8,12,19 3,6,9,16,22 10,13,1...

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

在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。遍歷陣列 時間複雜度 o nm 空間複雜度o 1 從二維陣列的右上角開始查詢。如果當前元素等於目標值,則返回 true。如...