【python高效解題】Leetcode-70:搜尋二維矩陣
阿新 • • 發佈:2021-01-19
我們的口號是:使用最簡潔的程式碼,完成AC:)
題目介紹
編寫一個高效的演算法來判斷 m x n 矩陣中,是否存在一個目標值。該矩陣具有如下特性:
每行中的整數從左到右按升序排列。
每行的第一個整數大於前一行的最後一個整數。
示例 1:
輸入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
輸出:true
示例2:
輸入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13
輸出:false
提示
- m == matrix.length
- n == matrix[i].length
- 1 <= m, n <= 100
- -104 <= matrix[i][j], target <= 104
題目分析
該題的難點在於如何有序的矩陣資料中,我們在這裡介紹一個小技巧,可以使用sum(matrix, [])快速將矩陣轉換為列表。
降維後使用二分法進行查詢即可:)
matrix2list = sum(matrix, [])
python程式碼
class Solution:
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
matrix2list = sum(matrix, [])
left, right = 0, len(matrix2list)-1
while left <= right:
mid = (left + right)//2
if matrix2list[mid] == target:
return True
elif matrix2list[mid] > target:
right = mid - 1
else:
left = mid + 1
return False