首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

leetcode: 54. Spiral Matrix

Problem

代码语言:javascript
复制
# Given a matrix of m x n elements (m rows, n columns), 
# return all elements of the matrix in spiral order.
#
# For example,
# Given the following matrix:
#
# [
#  [ 1, 2, 3 ],
#  [ 4, 5, 6 ],
#  [ 7, 8, 9 ]
# ]
#
# You should return [1,2,3,6,9,8,7,4,5].

Idea

AC

代码语言:javascript
复制
class Solution():
    def spiralOrder(self, matrix):
        if not matrix:
            return []
        res = []
        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):
                res.append(matrix[top][i])
            for i in range(top+1, bottom+1):
                res.append(matrix[i][right])
            if top<bottom:
                for i in reversed(range(left+1, right)):
                    res.append(matrix[bottom][i])
            if left<right:
                for i in reversed(range(top+1, bottom+1)):
                    res.append(matrix[i][left])
            left, right, top, bottom = left+1, right-1, top+1, bottom-1
        return res


if __name__ == "__main__":
    assert Solution().spiralOrder([[ 1, 2, 3 ],
                                   [ 4, 5, 6 ],
                                   [ 7, 8, 9 ]]) \
           == [1, 2, 3, 6, 9, 8, 7, 4, 5]
    assert Solution().spiralOrder([[2,3]]) == [2, 3]
下一篇
举报
领券