1. 程式人生 > 其它 >【python高效解題】Leetcode-70:搜尋二維矩陣

【python高效解題】Leetcode-70:搜尋二維矩陣

技術標籤:演算法題pythonleetcode演算法

我們的口號是:使用最簡潔的程式碼,完成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

提示

  1. m == matrix.length
  2. n == matrix[i].length
  3. 1 <= m, n <= 100
  4. -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