在乙個 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。
最好的方法就是,從右上角開始,變成乙個二叉搜尋樹,也就是說,如果比當前位置小,那麼一定在當前位置的左邊,如果比當前位置大,那麼一定在當前位置的下面
解釋一下,為什麼不會往右邊或者上面走
[[a, b, c],
[d, e, f]
[g, h, i]]
從c開始,target>c,則target>b>a,所以只能走到f,targete時會不會往上走,be,target>b,說明e>target>b所以往上走沒有用
給的提示是,給了乙個矩陣去搜尋,要從不同的點出發都試試
先貼個自己的答案
class
solution
:def
findnumberin2darray
(self, matrix: list[list[
int]
], target:
int)
->
bool:if
len(matrix)==0
orlen
(matrix[0]
)==0:
return
false
n, m =0,
len(matrix[0]
)while1:
if matrix[n]
[m-1
]> target:
m -=
1elif matrix[n]
[m-1
]< target:
n +=
1else
:return
true
if n ==
len(matrix)
or m ==-1
:return
false
劍指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。如...