跳过正文
  1. leetcode 题解/

29_顺时针打印矩阵

·111 字·1 分钟

类型:数组

  • 顺时针打印矩阵 💚

    https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/

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

    💡 模拟

    class Solution:
        def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
            if not matrix or type(matrix[0]) == int:
                return matrix
    
            ans = []
    
            def travel(x, y, u, v):
                if x > u or y > v:
                    return
                for j in range(y, v + 1):
                    ans.append(matrix[x][j])
                for i in range(x + 1, u + 1):
                    ans.append(matrix[i][v])
                if u > x:
                    for j in range(v - 1, y - 1, -1):
                        ans.append(matrix[u][j])
                if v > y:
                    for i in range(u - 1, x, -1):
                        ans.append(matrix[i][y])
                travel(x + 1, y + 1, u - 1, v - 1)
    
            travel(0, 0, len(matrix) - 1, len(matrix[0]) - 1)
            return ans

    时间复杂度:O(mn),空间复杂度:O(1)