Skip to content

Latest commit

 

History

History
46 lines (37 loc) · 1.37 KB

0054. 螺旋矩阵.md

File metadata and controls

46 lines (37 loc) · 1.37 KB
  • 标签:数组
  • 难度:中等

题目大意

给定一个 m * n 大小的二维矩阵 matrix。要求按照顺时针旋转的顺序,返回矩阵中的所有元素。

解题思路

按照题意进行模拟。可以实现定义一下上、下、左、右的边界,然后按照逆时针的顺序从边界上依次访问元素。

当访问完当前边界之后,要更新一下边界位置,缩小范围,方便下一轮进行访问。

代码

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        up, down, left, right = 0, len(matrix)-1, 0, len(matrix[0])-1
        ans = []
        while True:
            for i in range(left, right + 1):
                ans.append(matrix[up][i])
            up += 1
            if up > down:
                break
            for i in range(up, down + 1):
                ans.append(matrix[i][right])
            right -= 1
            if right < left:
                break
            for i in range(right, left - 1, -1):
                ans.append(matrix[down][i])
            down -= 1
            if down < up:
                break
            for i in range(down, up - 1, -1):
                ans.append(matrix[i][left])
            left += 1
            if left > right:
                break
        return ans