剑指offer第19题 牛客网在线编程链接 https://www.nowcoder.com/activity/oj
顺时针打印矩阵
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.
思路
题目要求顺时针打印矩阵,可以选择在原矩阵上进行操作。另外,我们可以换一种思路:将矩阵进行逆时针旋转,这样我们只需要每次输出矩阵的第一行matrix[0]就可以了。
Python2.7编写
# -*- coding:utf-8 -*-
class Solution:
# matrix类型为二维列表,需要返回列表
def printMatrix(self, matrix):
# write code here
res = [] #用于保存结果
i = 0
#直到所有的元素都输出,终止循环
while len(matrix[0]) != 0:
i += 1
res += matrix[0] #每次取逆时针旋转后矩阵的第一行
#将矩阵第一行matrix[1:]删除后,进行逆时针旋转,旋转操作见下面参考链接
matrix = [[row[col] for row in matrix[1:]] for col in range(len(matrix[0])-1,-1,-1)]
return res
写在后面
将矩阵进行逆时针旋转的操作参考:https://baijiahao.baidu.com/s?id=1579306472315552043&wfr=spider&for=pc
本文介绍了一种解决剑指Offer第19题的方法,即顺时针打印矩阵。通过逆时针旋转矩阵并输出第一行的方式,简化了问题的复杂度,提供了一种高效且易于理解的解决方案。
318

被折叠的 条评论
为什么被折叠?



