Python3 회전 행렬 문제 해결

Python3 회전 행렬 문제 해결

원제 https://leetcode-cn.com/problems/spiral-matrix/

m × n에 소자 매트릭스 (m 행, n 개의 열)을 감안할 때, 헬리컬 시계 방향으로 매트릭스, 리턴 된 모든 요소를 ​​따른다.

예 1 :

输入:
[
 [ 1, 2, 3 ],
 [ 4, 5, 6 ],
 [ 7, 8, 9 ]
]
输出: [1,2,3,6,9,8,7,4,5]

예 2 :

输入:
[
  [1, 2, 3, 4],
  [5, 6, 7, 8],
  [9,10,11,12]
]
输出: [1,2,3,4,8,12,11,10,9,5,6,7]

문제 해결 :

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        m = len(matrix)
        if m == 0:
            return []
        n = len(matrix[0])
        if n == 0:
            return 0
        res  = []
        dir = 1 # 方向:1 右 2 下 3 左 4 上
        x = 0 # 起始列标
        y = 0 # 起始行标
        while True:
            if x == -1 or x == n or y == -1 or y == m or matrix[y][x] == None:
                break

            res.append(matrix[y][x])
            matrix[y][x] = None
            
            if dir == 1 and ( x + 1 == n or matrix[y][x + 1] == None):
                dir = 2
            elif dir == 2 and (y + 1 == m or matrix[y + 1][x] == None):
                dir = 3
            elif dir == 3 and (x - 1 == -1 or matrix[y][x - 1] == None):
                dir = 4
            elif dir == 4 and (y - 1 == -1 or matrix[y - 1][x] == None):
                dir = 1

            if dir == 1:
                x += 1
            elif dir == 2:
                y += 1
            elif dir == 3:
                x -= 1
            elif dir == 4:
                y -= 1
        return res
게시 24 개 원래 기사 · 원의 칭찬 0 · 조회수 (406)

추천

출처blog.csdn.net/qq_18138105/article/details/105259013