zoukankan      html  css  js  c++  java
  • 剑指Offer 29 顺时针打印矩阵

    顺时针打印矩阵

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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
  • 相关阅读:
    docker简单介绍----Dockerfile命令
    docker简单介绍----docker仓库的应用
    nginx实现https的配置文件
    docker简单介绍---网络端口管理
    mysql查看实时连接数
    linux 批量测试域名返回码脚本
    docker简单介绍----镜像和容器管理
    香冢
    GitHub 在使用命令行 git push 时报错:The requested URL returned error: 403
    守规矩应该被骂吗?
  • 原文地址:https://www.cnblogs.com/asenyang/p/11013147.html
Copyright © 2011-2022 走看看