Leetcode Python - 74. Search a 2D Matrix
Leetcode #74 - Search a 2D Matrix
이번에는 특정 챕터별로 문제들을 풀어보겠습니다. matrix을 집중적으로 풀어보겠습니다.
리트코드의 문제 74 ‘Search a 2D Matrix’을 파이썬으로 풀어 보도록 하겠습니다.
포인트는 이진탐색을 두 번 써서 해당 값이 존재하는지 탐색하는 것입니다.
전체 코드는 아래와 같습니다.
class Solution:
def searchMatrix(self, matrix, target):
low = 0
high = len(matrix)-1
target_row = 0
while low <= high:
mid = (low+high)//2
if target < matrix[mid][0]:
high = mid-1
elif matrix[mid][-1] < target:
low = mid+1
else:
target_row = mid
break
low = 0
high = len(matrix[0])-1
target_col = 0
while low <= high:
mid = (low+high)//2
if target < matrix[target_row][mid]:
high = mid-1
elif matrix[target_row][mid] < target:
low = mid+1
else:
return True
return False
시간복잡도는
- O(logn) : 이진탐색(logn)으로 row를 결정 + 이진탐색(logn)으로 column을 결정
공간복잡도는
- O(1) : on place