《剑指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》---顺时针打印矩阵的主要内容,如果未能解决你的问题,请参考以下文章

剑指 Offer 29. 顺时针打印矩阵 的 详细题解

剑指offer面试题 29. 顺时针打印矩阵

剑指offer面试题 29. 顺时针打印矩阵

剑指offer:顺时针打印矩阵

剑指offer 19.顺时针打印矩阵

Java 剑指offer(29) 顺时针打印矩阵