Leetcode 240 Search a 2D Matrix II

Write an efficient algorithm that searches for a target value in an m x n integer matrix. The matrix has the following properties:

Integers in each row are sorted in ascending from left to right. Integers in each column are sorted in ascending from top to bottom.

image
Input: matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5 Output: true
image
Input: matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20 Output: false
  • Soruda bize bir matrix verliyor satırlar ve sütunlar küçükten büyüğe sıralı durumdalar.Ve bize verilen sayının bu matrix içerisinde bulunup bulunmadığı soruluyor.
  • Aramaya en sol ve en üst indeksten başlarız.
  • Eğer değerimiz bu indeksteki değerden küçük ise bir sol sütuna(col-1) geçeriz.
  • Eğer değerimiz bu indeksteki değerden büyük ise bir alt satıra (row + 1) geçeriz.
class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        if not matrix:
            return False
        row = 0
        col = len(matrix[0]) -1
        
        while row < len(matrix) and col>=0:
            cur = matrix[row][col]
            if target == cur:
                return True
            elif target < cur:
                col -= 1
            elif target > cur:
                row+=1
        return False