Leetcode Python - 59. Spiral Matrix II
Leetcode #59 - Spiral Matrix II
이번에는 특정 챕터별로 문제들을 풀어보겠습니다. matrix을 집중적으로 풀어보겠습니다.
리트코드의 문제 59 ‘Spiral Matrix II’을 파이썬으로 풀어 보도록 하겠습니다.
이 문제도 이전 Spiral Matrix를 참고하여 풀 수 있습니다.
포인트는 row_begin, col_begin, row_end, col_end
를 선언하여 진행해 나가면 됩니다.
전체 코드는 아래와 같습니다.
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
if n == 1:
return [[1]]
ret = [[0]*n for i in range(n)]
row_begin = 0
col_begin = 0
row_end = n-1
col_end = n-1
value = 1
while row_begin <= row_end and col_begin <= col_end:
for i in range(col_begin, col_end+1):
ret[row_begin][i] = value
value += 1
row_begin += 1
for i in range(row_begin, row_end+1):
ret[i][col_end] = value
value += 1
col_end -= 1
if col_begin <= col_end:
for i in range(col_end, col_begin-1, -1):
ret[row_end][i] = value
value += 1
row_end -= 1
if row_begin <= row_end:
for i in range(row_end, row_begin-1, -1):
ret[i][col_begin] = value
value += 1
col_begin += 1
return ret
시간복잡도는
- O(n^2) : 모든 element를 방문
공간복잡도는
- O(n^2) : 전체 크기