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