1. 程式人生 > >leetcode 74. 搜尋二維矩陣【Medium】【陣列】

leetcode 74. 搜尋二維矩陣【Medium】【陣列】

題目:

編寫一個高效的演算法來判斷 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