在乙個 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。
限制:0 <= n <= 1000
0 <= m <= 1000
注意:本題與主站 240 題相同:
因為二維陣列已經行、列有序,所以採用類似二分查詢的思想,選取中間值(左下角或者右上角)為基準進行比較。以左下角為例:
注意獲取二維陣列的行數是matrix.size()
,列數是matrix[0].size()
,如果要用最大下標則應該減一;先對二維陣列進行判空,為空時直接返回 false,不判空則碰到空的測試用例會報錯。
分析時間複雜度,因為每次迴圈後僅在列或者行方向前進一次,最壞情況下從左下角走到右上角共需要行數+列數次,時間複雜度 o(m+n),空間複雜度 o(1)
class
solution
return
false;}
};
執行用時 :48 ms, 在所有 c++ 提交中擊敗了74.33%的使用者
記憶體消耗 :13 mb, 在所有 c++ 提交中擊敗了100.00%的使用者
劍指offer 面試題04 二維陣列查詢
二維陣列查詢 在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。示例 現有矩陣 matrix 如下 1,4,7,11,15 2,5,8,12,19 3,6,9,16,22 ...
劍指offer 面試題3 二維數查詢 java實現
面試題3 題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。分析 首先選取陣列中右上角的數字。如果該數字等於要查詢的數字,查詢過程結束 如果該數字大於要查詢的數字,剔除這個數字所...
劍指offer 面試題04 二維陣列中的查詢
編寫乙個高效的演算法來搜尋 m x n 矩陣 matrix 中的乙個目標值 target。該矩陣具有以下特性 每行的元素從左到右公升序排列。每列的元素從上到下公升序排列。示例 現有矩陣 matrix 如下 1,4,7,11,15 2,5,8,12,19 3,6,9,16,22 10,13,14,17...