leetcode 74. 搜尋二維矩陣【Medium】【陣列】
阿新 • • 發佈:2018-11-04
題目:
編寫一個高效的演算法來判斷 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
思路:
可以從第一行的最後一個數開始判斷,如果當前數等於targer,就結束判斷返回True;如果當前數大於target,就判斷當前行前面的數值;如果當前數小於target,就繼續判斷下一行的最後一個數。
程式碼:
class Solution(object): def searchMatrix(self, matrix, target): """ :type matrix: List[List[int]] :type target: int :rtype: bool """ if matrix == None or matrix == []: return False row = len(matrix) col = len(matrix[0]) index_y = col - 1 index_x = 0 while index_x < row and index_y >= 0: if matrix[index_x][index_y] == target: return True elif matrix[index_x][index_y] > target: index_y -= 1 else: index_x += 1 return False