前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode: 54. Spiral Matrix

leetcode: 54. Spiral Matrix

作者头像
JNingWei
发布2018-09-27 17:04:21
3100
发布2018-09-27 17:04:21
举报
文章被收录于专栏:JNing的专栏

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]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年11月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Problem
  • Idea
  • AC
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档