LC 速查

HOT 100索引 › B6 矩阵 Matrix

LC 54螺旋矩阵Spiral Matrix 中等

按顺时针螺旋顺序返回矩阵中的全部元素。

思路 四边界收缩:按上、右、下、左四条边依次遍历,每走完一条边收缩对应边界,越界即停。时间 O(mn)。

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        ans = []
        l, t = 0, 0
        r = len(matrix[0]) - 1
        b = len(matrix) - 1
        while True:
            for i in range(l, r + 1):
                ans.append(matrix[t][i])
            t += 1
            if t > b:
                break
            for i in range(t, b + 1):
                ans.append(matrix[i][r])
            r -= 1
            if l > r:
                break
            for i in range(r, l - 1, -1):
                ans.append(matrix[b][i])
            b -= 1
            if t > b:
                break
            for i in range(b, t - 1, -1):
                ans.append(matrix[i][l])
            l += 1
            if l > r:
                break
        return ans
← 上一题 矩阵置零旋转图像 下一题 →