''' 解题思路: 先做4个子函数fun1-4,再做一个主调fun,运行一次剥离一圈数据,直到矩阵为空 ''' def fun1(matrix): if matrix: return matrix.pop(0),matrix else: return [],[] def fun2(matrix): if matrix: t = [] mat = [] for row in matrix: if row: a = row.pop() t.append(a) mat.append(row) return t,mat else: return [],[] def fun3(matrix): if matrix: return matrix.pop()[::-1],matrix else: return [],[] def fun4(matrix): if matrix: t = [] mat = [] for row in matrix[::-1]: if row: a = row.pop(0) t.append(a) mat.append(row) return t,mat[::-1] else: return [],[] def fun(matrix): if matrix: out1,matrix = fun1(matrix) out2,matrix = fun2(matrix) out3,matrix = fun3(matrix) out4,matrix = fun4(matrix) return out1+out2+out3+out4,matrix else: return [],[] # @param matrix int整型二维数组 # @return int整型一维数组 # class Solution: def spiralOrder(self , matrix ): # write code here res = [] while matrix: out,matrix = fun(matrix) res += out #print(res) return res #print(Solution().spiralOrder([[1,2,3],[4,5,6],[7,8,9]]))