顺时针打印矩阵 包注释不超过20行的简便解法

顺时针打印矩阵

http://www.nowcoder.com/questionTerminal/9b4c81a02cd34f76be2659fa0d54342a

这道题可以使用一种超简单且易理解的方法(包注释不超过20行):1.吸收第一行,并将第一行从矩阵中去掉,2.将矩阵“变相转置”(这里的转置可以理解为将矩阵从地上立起来,比如矩阵是【【1,2,3】, 【4,5,6】】 将它“变相转置”(立起来)为 【【3,6】,【2,5】,【1,4】】 )3.重复以上两步,直到将第一行去掉之后矩阵为空。

# -*- coding:utf-8 -*-
class Solution:
    # matrix类型为二维列表,需要返回列表
    def printMatrix(self, matrix):
        outlist = []
        while 1:
            # 吃掉第一行
            outlist.extend(matrix[0])
            # 如果还有其他行,去掉第一行。否则跳出循环
            if len(matrix)>1:
                matrix = matrix[1::]
            else :
                break
            # “转置”,把矩阵“立”起来
            matrix =[ [ row[i] for row in matrix] for i in range(len(matrix[0])-1 , -1 , -1) ]
        return outlist
全部评论
6
点赞 回复 分享
发布于 2023-05-09 11:03 浙江
真秀啊
点赞 回复 分享
发布于 2021-07-19 21:59
喵喵喵
点赞 回复 分享
发布于 2021-03-06 15:42
妙蛙
点赞 回复 分享
发布于 2020-11-01 17:19
不错不错,确实很巧妙,我开始也是这么想的,只是想到矩阵转置本身也要花时间,就放弃了。
点赞 回复 分享
发布于 2020-08-04 22:22
神了!
点赞 回复 分享
发布于 2020-07-24 15:55
转置这一步操作要O(mn)时间,到最后一次打印需要转置O(min(m,n))次,整体就是O(m*n*min(m,n)),时间复杂度多了一维
点赞 回复 分享
发布于 2020-06-12 23:01

相关推荐

点赞 评论 收藏
分享
评论
115
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务