Skip to content

Latest commit

 

History

History
43 lines (39 loc) · 1.11 KB

54.md

File metadata and controls

43 lines (39 loc) · 1.11 KB

题目地址

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

解答

class Solution:
    def __init__(self):
        self.res = []

    def spiralOrder(self, matrix):
        """
            螺旋矩阵

            给定一个包含 m x n 个元素的矩阵(m 行, n 列),
            请按照顺时针螺旋顺序,返回矩阵中的所有元素。

            输入:
            [
             [ 1, 2, 3 ],
             [ 4, 5, 6 ],
             [ 7, 8, 9 ]
            ]
            输出: [1,2,3,6,9,8,7,4,5]
        """
        if not matrix:
            return self.res
        m, n = len(matrix), len(matrix[0])
        self.res += matrix.pop(0)
        if m < 2:
            return self.res
        elif m == 2:
            self.res += matrix.pop()[::-1]
            return self.res
        for i in range(0, m - 2):
            self.res.append(matrix[i].pop())
        self.res += matrix.pop()[::-1]
        if matrix[0]:
            for i in range(m - 3, -1, -1):
                self.res.append(matrix[i].pop(0))
        if matrix[0]:
            self.spiralOrder(matrix)
        return self.res