设立一个directions数组,存储方向,然后在满足条件的时候,转换方向,请注意当row或col到达边界的时候,或者当前遍历值已经“输出”过的时候,则转换方向。

# -*- coding:utf-8 -*-
class Solution:
    # matrix类型为二维列表,需要返回列表
    def printMatrix(self, matrix):
        # write code here
        directions=[(0,1),(1,0),(0,-1),(-1,0)]
        row= len(matrix)
        col=len(matrix[0])
        result=[0]*(row*col)
        count=0
        r=c=0
        index=0
        dx=dy=0
        if row*col==0:
            return []
        while count <=row*col-1:

            result[count]=matrix[r][c]
            matrix[r][c]=-1
            count+=1
            dx=directions[index][0]
            dy=directions[index][1]

            if r+dx==row or c+dy==col or matrix[r+dx][c+dy]==-1:
                index=(index+1)%4
            dx=directions[index][0]
            dy=directions[index][1]

            r+=dx
            c+=dy
        return result