面試題 搜尋二維矩陣中是否存在目標值

2021-10-03 14:52:55 字數 742 閱讀 8688

最簡單的是暴力遍歷,好一點的可以用二分查詢。

但是這兩題其實可以用同乙個思路解決:

從矩陣的左下角或者右上角開始判斷,以左下角開始為例:

另外注意特殊情況,matrix為或是的判斷。

class solution(object):

def searchmatrix(self, matrix, target):

""":type matrix: list[list[int]]

:type target: int

:rtype: bool

"""if not matrix or not matrix[0]:

return false

r = len(matrix)

c = len(matrix[0])

nr = r-1

nc = 0

while nr >= 0 and nr < r and nc >= 0 and nc < c:

if matrix[nr][nc] == target:

return true

elif matrix[nr][nc] < target:

nc += 1

elif matrix[nr][nc] > target:

nr -= 1

return false

參考:

solution/sou-suo-er-wei-ju-zhen-ii-by-leetcode-2/

搜尋二維陣列(面試題3)

寫出乙個高效的演算法來搜尋 m n矩陣中的值。這個矩陣具有以下特性 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 查詢17,return true 查詢20,return false。思路 由例子可以看出所有數字的...

面試題21 二維陣列搜尋

題目 設計乙個演算法對 m n 矩陣進行搜尋,這個矩陣擁有如下屬性.1 每行的數都是從左到右排序好的.2 每行的首數大於上行的尾數.其實這題就是用二分查詢演算法,二分查詢一般是在一維陣列上進行搜尋,解決這道題的關鍵就是如何將二維陣列對映成一維陣列.對映關係為 k i n j,j 實現 package...

面試題 二維陣列中的查詢

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。例如下面的二維陣列就是每行 每列都遞增排序。如果在這個陣列中查詢數字7,則返回true 如果查詢數字5,由於陣列不含有該數字,則返回f...