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.
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
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