最簡單的是暴力遍歷,好一點的可以用二分查詢。
但是這兩題其實可以用同乙個思路解決:
從矩陣的左下角或者右上角開始判斷,以左下角開始為例:
另外注意特殊情況,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...