在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。
請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
樣例
輸入陣列:
[ [1,2,8,9],
[2,4,9,12],
[4,7,10,13],
[6,8,11,15]
]如果輸入查詢數值為7,則返回true,
如果輸入查詢數值為5,則返回false。
核心在於發現每個子矩陣右上角的數的性質:
如下圖所示,x
左邊的數都小於等於x
,x
下邊的數都大於等於x
。
因此我們可以從整個矩陣的右上角開始列舉,假設當前列舉的數是x
:
時間複雜度分析
每一步會排除一行或者一列,矩陣一共有n
行,m
列,所以最多會進行n+m
步。所以時間複雜度是 o(n
+m)o(n+m)
o(n+m)
。單調性掃瞄
public
boolean
find
(int target,
int[
] array)
return
false
;}
面試題04 二維陣列中的查詢
在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。示例 現有矩陣 matrix 如下 1,4,7,11,15 2,5,8,12,19 3,6,9,16,22 10,13,1...
面試題04 二維陣列中的查詢
題目描述 在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。示例 現有矩陣 matrix 如下 1,4,7,11,15 2,5,8,12,19 3,6,9,16,22 10...
面試題04 二維陣列中的查詢
在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。示例 現有矩陣 matrix 如下 1,4,7,11,15 2,5,8,12,19 3,6,9,16,22 10,13,1...