LeetCode演算法題74 搜尋二維矩陣解析

2021-09-11 02:20:48 字數 1777 閱讀 2912

編寫乙個高效的演算法來判斷 m x n 矩陣中,是否存在乙個目標值。該矩陣具有如下特性:

示例 1:

輸入:

matrix = [

[1, 3, 5, 7],

[10, 11, 16, 20],

[23, 30, 34, 50]

]target = 3

輸出: true

示例 2:

輸入:

matrix = [

[1, 3, 5, 7],

[10, 11, 16, 20],

[23, 30, 34, 50]

]target = 13

輸出: false

這個題的主要思路就是兩次二分法查詢就好了,第一次查詢行號,第二次查詢列號即可。

c++源**:

class

solution

int tmp = right;

left =0;

right = n-1;

while

(left <= right)

return

false;}

};

python3源**:

class

solution

:def

searchmatrix

(self, matrix, target)

:"""

:type matrix: list[list[int]]

:type target: int

:rtype: bool

"""iflen

(matrix)==0

orlen

(matrix[0]

)==0:

return

false

m =len(matrix)

n =len(matrix[0]

)if target < matrix[0]

[0]or target > matrix[m-1]

[n-1]:

return

false

left =

0 right = m -

1while left <= right:

mid =

(left + right)//2

if matrix[mid][0

]== target:

return

true

elif target > matrix[mid][0

]:left = mid +

1else

: right = mid -

1 tmp = right

left =

0 right = n -

1while left <= right:

mid =

(left + right)//2

if matrix[tmp]

[mid]

== target:

return

true

elif target > matrix[tmp]

[mid]

: left = mid +

1else

: right = mid -

1return

false

Leetcode刷題74 搜尋二維矩陣

編寫乙個高效的演算法來判斷 m x n 矩陣中,是否存在乙個目標值。該矩陣具有如下特性 每行中的整數從左到右按公升序排列。每行的第乙個整數大於前一行的最後乙個整數。示例 1 輸入 matrix 1,3,5,7 10,11,16,20 23,30,34,50 target 3 輸出 true 示例 2...

LeetCode演算法題 單詞搜尋exist

給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回 ...

LeetCode74 搜尋二維矩陣

題目大意 要求在乙個二維矩陣中搜尋乙個數,要求是時間盡可能少。說明 二維矩陣是從左到右,從上到下依次增大的。題目分析 本題如果用挨個遍歷的話,顯然沒有利用上矩陣中的有序關係。我的做法是 將target的值與每行的最後乙個數進行比較,若最後乙個數小於target,那麼還要往下搜尋,將搜尋的行邊界的上界...