旧魏は学ぶためにあなたを取るの申し出を受賞---ブラシタイトルシリーズ(時計回り印刷行列19)

19.時計回り印刷行列

問題:

1,234,567,891,011,121,314 15が順次16プリントアウト:次の4×4行列を入力した場合、例えば、各番号に順次印刷する時計回りの順に外側から内側に向​​かって順に、行列を入力1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10デジタル。

ソリューション:

思想:

印刷はターン時計回りに循環印刷であり、円は2行または2が含まれ、リングがあるだろうときウィル右から左に印刷し、印刷するには、左から右に判断するために、印刷時にのみ1行が含まれています重複印刷は、印刷のケースから、いつ下向き印刷が重複しますボトムアップから印刷するかどうかを判断するために、必ず同じものを含んでいる場合

Pythonコード:

# -*- coding:utf-8 -*-
class Solution:
    # matrix类型为二维列表,需要返回列表
    def printMatrix(self, matrix):
        # write code here
        result=[]
        n=len(matrix)
        m=len(matrix[0])
        if(n==1 and m==1):
            res=[matrix[0][0]]
        for o in range((min(n,m)+1)//2):
            [result.append(matrix[o][i]) for i in range(o,m-o)]
            [result.append(matrix[j][m-1-o]) for j in range(o,n-o) if matrix[j][m-1-o] not in result]
            [result.append(matrix[n-1-o][k]) for k in range(m-1-o,o-1,-1) if matrix[n-1-o][k] not in result]
            [result.append(matrix[l][o]) for l in range(n-1-o,o-1,-1) if matrix[l][o] not in result]
        return result
公開された160元の記事 ウォン称賛30 ビュー70000 +

おすすめ

転載: blog.csdn.net/yixieling4397/article/details/104917665