【题目描述】
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.
【解题思路】
按顺时针的顺序输入矩阵,该过程可以模拟为:
while matrix:
输出矩阵的第一行
把剩下的矩阵逆时针旋转90度
其中,将矩阵逆时针旋转90度也就是对矩阵的转置再反向。
用Python代码实现如下:
# -*- coding:utf-8 -*-
class Solution:
# matrix类型为二维列表,需要返回列表
def printMatrix(self, matrix):
array = []
while matrix:
# 矩阵的第一行
array += [item for item in matrix[0]]
if len(matrix) == 1:
return array
else:
# 把剩下的矩阵逆时针旋转90度
left_matrix = matrix[1:]
matrix = self.transpose(left_matrix)
return array
def transpose(self, matrix):
tran_matrix = []
for j in range(len(matrix[0])):
tran_matrix.append([])
for i in range(len(matrix)):
tran_matrix[j].append(matrix[i][j])
# 以上是求矩阵的转置
tran_matrix.reverse()
# 将矩阵反向
return tran_matrix