Spiral Matrix

Given a matrix ofmxnelements (mrows,ncolumns), 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]

.Solution

这道题需要一个对角线的起始,结束的行列指针,我一开始犯的错误就是直接使用了running number 。

class Solution(object):
    def spiralOrder(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: List[int]
        """
        if matrix == None or len(matrix) == 0:
            return []
        if matrix[0] == None or len(matrix[0]) == 0:
            return []
        m = len(matrix)
        n = len(matrix[0])
        result = []

        c, r = 0, 0

        while r < m and c < n:
            for i in range(c, n):
                result.append(matrix[r][i])
            r += 1
            for i in range(r, m):
                result.append(matrix[i][n - 1])
            n -= 1
            if r < m:
                for i in range(n - 1, c - 1, -1):
                    result.append(matrix[m - 1][i])
                m -= 1
            if c < n:
                for i in range(m - 1, r - 1, -1):
                    result.append(matrix[i][c])
                c += 1
        return result

Last updated

Was this helpful?