题目链接
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。**
示例
示例1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]
提示
0 <= matrix.length <= 100-
思路
本题与0054-螺旋矩阵相同。区别是本题
matrix大小可以取0。题解
class Solution:def spiralOrder(self, matrix: List[List[int]]) -> List[int]:ret = []if not matrix or len(matrix) == 0 or len(matrix[0]) == 0:return retm, n = len(matrix), len(matrix[0])left, right = 0, n - 1top, bottom = 0, m - 1totalNum = m * nwhile totalNum > 0:for i in range(left, right + 1):if totalNum == 0:breakret.append(matrix[top][i])totalNum -= 1top += 1for i in range(top, bottom + 1):if totalNum == 0:breakret.append(matrix[i][right])totalNum -= 1right -= 1for i in range(right, left - 1, -1):if totalNum == 0:breakret.append(matrix[bottom][i])totalNum -= 1bottom -= 1for i in range(bottom, top - 1, -1):if totalNum == 0:breakret.append(matrix[i][left])totalNum -= 1left += 1return ret
复杂度分析
时间复杂度:
- 空间复杂度:
