[LeetCode]题解(python):054-Spiral Matrix

题目来源:

  https://leetcode.com/problems/spiral-matrix/


题意分析:

  输入一个m×n的数字矩阵。将这个矩阵按照螺旋方向输成一列。比如:

[
 [ 1, 2, 3 ],
 [ 4, 5, 6 ],
 [ 7, 8, 9 ]
]
输出[1,2,3,6,9,8,7,4,5]

题目思路:

  这道题目只需要模拟这个过程。分四步,第一步行左到右,第二步从上到下,第三步右到左,最后一步下到上。


代码(python):

  

class Solution(object):
    def spiralOrder(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: List[int]
        """
        size = len(matrix)
        if size == 0: return []
        m = len(matrix[0])
        if m == 0: return []
        r,l = 0,0; size -= 1;m -= 1
        ans = []
        while r <= m and l <= size:
            for i in range(r,m + 1):
                ans.append(matrix[l][i])
            l += 1
            if l > size:
                break
            for i in range(l,size + 1):
                ans.append(matrix[i][m])
            m -= 1;i = m
            if m < r:
                break
            while i >= r:
                ans.append(matrix[size][i]);i -= 1
            size -= 1;i = size
            if size < l:
                break
            while i >= l:
                ans.append(matrix[i][r]); i -= 1
            r += 1
        return ans
View Code

转载请注明出处:http://www.cnblogs.com/chruny/p/4968746.html

原文地址:https://www.cnblogs.com/chruny/p/4968746.html