Leetcode Python - 54. Spiral Matrix
Leetcode #54 - Spiral Matrix
이제 blind 75 leetcode를 풀어보겠습니다. https://leetcode.com/discuss/interview-question/460599/Blind-75-LeetCode-Questions
리트코드의 문제 54 ‘Spiral Matrix’을 파이썬으로 풀어 보도록 하겠습니다. 포인트는 4단계로 순서를 나누어서 ⇒ ⇓ ⇐ ⇑ 방향으로 계속 진행해줍니다.
전체 코드는 아래와 같습니다.
class Solution:
def spiralOrder(self, matrix):
m = len(matrix)
n = len(matrix[0])
row_start = 0
row_end = m-1
col_start = 0
col_end = n-1
ret = []
while row_start<=row_end and col_start<=col_end:
for i in range(col_start, col_end+1):
ret.append(matrix[row_start][i])
row_start += 1
if row_start > row_end:
break
for j in range(row_start, row_end+1):
ret.append(matrix[j][col_end])
col_end -= 1
if col_start > col_end:
break
for i in range(col_end, col_start-1, -1):
ret.append(matrix[row_end][i])
row_end -= 1
if row_start > row_end:
break
for j in range(row_end, row_start-1, -1):
ret.append(matrix[j][col_start])
col_start += 1
if col_start > col_end:
break
return ret
시간복잡도는
- O(n*m) : 전체를 방문
공간복잡도는
- O(1) : 상수 변수들 생성