输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
1 # -*- coding:utf-8 -*- 2 class Solution: 3 # matrix类型为二维列表,需要返回列表 4 def __init__(self): 5 self.result = [] 6 self.visited = [] 7 8 def goRight(self,matrix,i,j,row,column,direct): 9 if j + 1 < column and self.visited[i][j+1] == 0: 10 self.result.append(matrix[i][j+1]) 11 self.visited[i][j+1] = 1 12 self.dfs(matrix,i,j+1,row,column,direct) 13 14 def goDown(self,matrix,i,j,row,column,direct): 15 if i + 1 < row and self.visited[i+1][j] == 0: 16 self.result.append(matrix[i+1][j]) 17 self.visited[i+1][j] = 1 18 self.dfs(matrix,i+1,j,row,column,direct) 19 20 def goLeft(self,matrix,i,j,row,column,direct): 21 if j - 1 >= 0 and self.visited[i][j-1] == 0: 22 self.result.append(matrix[i][j-1]) 23 self.visited[i][j-1] = 1 24 self.dfs(matrix,i,j-1,row,column,direct) 25 26 def goUp(self,matrix,i,j,row,column,direct): 27 if i - 1 >= 0 and self.visited[i-1][j] == 0: 28 self.result.append(matrix[i-1][j]) 29 self.visited[i-1][j] = 1 30 self.dfs(matrix,i-1,j,row,column,direct) 31 32 def dfs(self,matrix,i,j,row,column,direct): 33 if direct == 0: 34 self.goRight(matrix,i,j,row,column,0) 35 self.goDown(matrix,i,j,row,column,1) 36 self.goLeft(matrix,i,j,row,column,2) 37 self.goUp(matrix,i,j,row,column,3) 38 if direct == 1: 39 self.goDown(matrix,i,j,row,column,1) 40 self.goLeft(matrix,i,j,row,column,2) 41 self.goUp(matrix,i,j,row,column,3) 42 self.goRight(matrix,i,j,row,column,0) 43 if direct == 2: 44 self.goLeft(matrix,i,j,row,column,2) 45 self.goUp(matrix,i,j,row,column,3) 46 self.goRight(matrix,i,j,row,column,0) 47 self.goDown(matrix,i,j,row,column,1) 48 if direct == 3: 49 self.goUp(matrix,i,j,row,column,3) 50 self.goRight(matrix,i,j,row,column,0) 51 self.goDown(matrix,i,j,row,column,1) 52 self.goLeft(matrix,i,j,row,column,2) 53 54 def printMatrix(self, matrix): 55 row = len(matrix) 56 column = len(matrix[0]) 57 self.visited = [[0 for c in range(column)] for r in range(row)] 58 self.result.append(matrix[0][0]) 59 self.visited[0][0] = 1 60 self.dfs(matrix,0,0,row,column,0) 61 return self.result 62 # write code here