每日一道演算法題 二維陣列中的查詢

2021-09-30 00:25:36 字數 600 閱讀 2842

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

在乙個有序陣列中查詢某個數,我們很容易就想到二分查詢,所以不難寫出**:

public class solution 

}return flag;

}}

除了這種方法以外,還有其他方法嗎?

我們試著分析一下題意,既然從左到右依次增大,從上到下也依次增大,那我們可不可以利用這一點呢?

這裡有個小竅門,因為如果當前位置比target小,那我們到底是向下還是向右呢?你可能會說我們可以用bfs來解決呀,但是這樣就把問題複雜話了。我們應該將這種雙選題變為單選題!

我們選擇將右上角或者左下角作為起點,以右上角為例:如果當前位置比target小,那麼我們就往左;如果比當前位置大,那麼我們就往下。這樣這個問題就完美解決了!

右上角作為起點:

public class solution 

return flag;

}}

每日一道演算法題 二維陣列中的查詢 python

題目描述 思路 思路一 按行執行二分查詢,只要該行的第乙個元素小於目標,就對該行二分查詢。思路二 從陣列的左下角array j i 開始查詢,如果當前值小於目標,就向右,即i 1 如果當前值大於目標,就向上,即j 1。源 思路1 時間複雜度0 nlogn class solution array 二...

每日一題 二維陣列中的查詢

題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數輸入描述 array 待查詢的二維陣列 target 查詢的數字 輸出描述 查詢到返回true,查詢不到返回false 思路一 二...

每日刷題 二維陣列中的查詢

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