編寫乙個高效的演算法來判斷 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,那麼還要往下搜尋,將搜尋的行邊界的上界...