《剑指offer》---顺时针打印矩阵
Posted LLLiuye
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《剑指offer》---顺时针打印矩阵相关的知识,希望对你有一定的参考价值。
本文算法使用python3实现
1. 问题1
1.1 题目描述:
??输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
??输入矩阵为 \[ \begin{bmatrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \\ 13 & 14 & 15 & 16 \\ \end{bmatrix} \]
??输出为1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10
??时间限制:1s;空间限制:32768K
1.2 思路描述:
??(1)将矩阵第一行加入result中,同时删除第一行。
??(2)对剩余矩阵进行逆时针旋转90度,继续取其第一行
??(3)直到矩阵被删除为空为止。
1.3 程序代码:
class Solution:
def printMatrix(self, matrix):
# 每次将矩阵第一行加入result列表
result = []
while matrix:
result += matrix.pop(0)
if not matrix :
break
matrix = self.turnMatrix(matrix)
return result
def turnMatrix(self, matrix):
# 对矩阵进行逆时针旋转90度操作
rows = len(matrix)
cols = len(matrix[0])
resMatrix = []
for j in range(cols):
temp = []
for i in range(rows):
temp.append(matrix[i][j])
resMatrix.append(temp)
resMatrix.reverse()
return resMatrix
以上是关于《剑指offer》---顺时针打印矩阵的主要内容,如果未能解决你的问题,请参考以下文章