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) : 상수 변수들 생성