思路:循环打印即可,终止条件是存储数组的长度等于原始数组中元素的个数

Python:

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        res=[]
        if not matrix:
            return res
        x1,y1,x2,y2=0,0,len(matrix),len(matrix[0])
        count=x2*y2
        while len(res)<count:
            if len(res)<count:
                for i in range(y1,y2):
                    res.append(matrix[x1][i])
                x1+=1
            if len(res)<count:
                for i in range(x1,x2):
                    res.append(matrix[i][y2-1])
                y2-=1
            if len(res)<count:
                for i in range(y2-1,y1-1,-1):
                    res.append(matrix[x2-1][i])
                x2-=1
            if len(res)<count:
                for i in range(x2-1,x1-1,-1):
                    res.append(matrix[i][y1])
                y1+=1
        return res