54. 螺旋矩阵

54. 螺旋矩阵

class Solution:
    def spiralOrder(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: List[int]
        """

        rown = len(matrix)
        coln = len(matrix[0]) if rown > 0 else 0
        total = rown * coln
 
        ans = []
        i = 0
        while len(ans) < total:
            for rightcol in range(i, coln-i):
                ans.append(matrix[i][rightcol])
            downrow = -1 # 越界标记
            for downrow in range(i+1, rown - i):
                ans.append(matrix[downrow][rightcol])
            if downrow == -1:
                break
            icol = -1
            for icol in range(rightcol-1, -1+i, -1):
                ans.append(matrix[downrow][icol])
            if icol == -1:
                break
            for uprow in range(downrow-1, i, -1):
                ans.append(matrix[uprow][icol])
            i += 1
        return ans