输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

示例 1:

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

示例 2:

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

限制:

  • 0 <= matrix.length <= 100
  • 0 <= matrix[i].length <= 100

Python 解答:

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        if not matrix:
                return []
        length = len(matrix)
        width = len(matrix[0])
        def curPrint(matrix, x, y, l, w, res):
            if l == 0 or w == 0:
                return res
            elif l == 1 or w == 1:
                if l == 1:
                    for i in range(w):
                        res.append(matrix[x][y+i])
                else:
                    for i in range(l):
                        res.append(matrix[x+i][y])
                return res
            else:
                for i in range(w):
                    res.append(matrix[x][y+i])
                for i in range(1, l-1):
                    res.append(matrix[x+i][y+w-1])
                for i in range(w-1, -1, -1):
                    res.append(matrix[x+l-1][y+i])
                for i in range(l-2, 0, -1):
                    res.append(matrix[x+i][y])
                return curPrint(matrix, x+1, y+1, l-2, w-2, res)
        return curPrint(matrix, 0, 0, len(matrix), len(matrix[0]), [])
最后修改日期: 2021年4月5日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。