LeetCode刷题

[LeetCode] 54. 螺旋矩阵

2018-12-03  本文已影响2人  杏仁小核桃

54. 螺旋矩阵
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
示例:
输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
输出: [1,2,3,6,9,8,7,4,5]

解法:用变量left, right, top, bottom记录左,右,顶,底。然后按照左到右,顶到底,右到左,底到顶的顺序循环,把遍历的元素加入到结果。

class Solution:
    def spiralOrder(self, matrix):
        result = []
        if not matrix:
            return result
        
        left, right, top, bottom = 0, len(matrix[0]) - 1, 0, len(matrix) - 1
        while left <= right and top <= bottom:
            for i in range(left, right+1):
                result.append(matrix[top][i])
            for j in range(top+1, bottom):
                result.append(matrix[j][right])
            for i in range(right, left-1, -1):
                if top < bottom:
                    result.append(matrix[bottom][i])
            for j in range(bottom-1, top, -1):
                if left < right:
                    result.append(matrix[j][left])
            left, right, top, bottom = left+1, right-1, top+1, bottom-1
        return result
上一篇下一篇

猜你喜欢

热点阅读