使用递归思想,打印多少就删除多少,最后把矩阵变成[[*]]结束。注意python对于数组为空的判断条件。
用例通过率: 100.00% 运行时间: 313ms 占用内存: 6840KB。

#
#
# @param matrix int整型二维数组 the matrix
# @return int整型一维数组
#
class Solution:
    def printMatrix(self, matrix):
        ans = []
        while True:
            # 第0行
            for i in matrix[0]:
                ans.append(i)
            del matrix[0]
            if not matrix:
                break
            # 第-1列
            for i in matrix:
                ans.append(i[-1])
                i.pop()
            if not matrix[0]:
                break
            # 第-1行
            templist = []
            for i in matrix[-1]:
                templist.append(i)
            templist.reverse()
            ans += templist
            del matrix[-1]
            if not matrix:
                break
            # 第1列
            templist = []
            for i in matrix:
                templist.append(i[0])
                del i[0]
            templist.reverse()
            ans += templist
            if not matrix[0]:
                break
        return ans

处理过程:

[[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]]

[[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]]

[[5, 6, 7],
[9, 10, 11],
[13, 14, 15]]

[[5, 6, 7],
[9, 10, 11]]

[[6, 7],
[10, 11]]

[[10, 11]]

[[10]]

输出
[1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10]