# -*- coding:utf-8 -*-
class Solution:
    # matrix类型为二维列表,需要返回列表
    def printMatrix(self, matrix):
        res = []
        m = len(matrix)
        n = len(matrix[0])
        sum = n * m
        if m == 1 and n != 0: 
            return matrix[0]
        if n == 1:
            for index in range(m):
                res.append(matrix[index][0])
            return res
        i,j = 0,0
        circle = 0
        left,right,upper,lower = 0,0,0,0
        while True:
            while right < n - 1:
                res.append(matrix[i][j])
                sum -= 1
                j += 1
                right += 1
            if sum == 0:
                break
            while lower < m - 1:
                res.append(matrix[i][j])
                sum -= 1
                i += 1
                lower += 1
            if sum == 0:
                break
            while left < n - 1:
                res.append(matrix[i][j])
                sum -= 1
                j -= 1
                left += 1
            if sum == 0:
                break
            while upper < m - 1:
                res.append(matrix[i][j])
                sum -= 1
                i -= 1
                upper += 1
            if sum == 0:
                break
            circle += 1
            i,j = circle,circle
            m , n = m-2, n-2
            left,right,upper,lower = 0,0,0,0
            
            if m == 1:
                while(sum):
                    res.append(matrix[i][j])
                    sum -= 1
                    j += 1
            if n == 1:
                while(sum):
                    res.append(matrix[i][j])
                    sum -= 1
                    i += 1
            if sum == 0:
                break
        return res