面試題 04 二維陣列中的查詢

2021-09-25 10:56:32 字數 865 閱讀 9318

在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。

請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。

樣例

輸入陣列:

[ [1,2,8,9],

[2,4,9,12],

[4,7,10,13],

[6,8,11,15]

]如果輸入查詢數值為7,則返回true,

如果輸入查詢數值為5,則返回false。

核心在於發現每個子矩陣右上角的數的性質:

如下圖所示,x左邊的數都小於等於xx下邊的數都大於等於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...