安全プランを証明するために - 外側から内側に行列をトラバース

タイトル説明

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デジタル。 

入力N * Mマトリクス、戻るリスト

アイデア:

再帰的に始めたい、再帰は問題を解決できないと行列のランクの長さは好きにしたくないことがわかりました。範囲外にあります表示されます。

そして、手の2対、他の人の答えを読んでください!

アップ、ダウン、ポインタが出会うの任意のペアがあり、右とき、左、そしてそれは、この2次元マトリックストラバーサルの上に示してい

class Solution:
    # matrix类型为二维列表,需要返回列表
    def printMatrix(self, matrix):
        if len(matrix)==0:
            return []
        
        ans = []
        h = len(matrix)
        r = len(matrix[0])
        left = 0
        right = r-1
        down = h-1
        up = 0
        while True:
            
            for j in range(left,right+1):
                ans.append(matrix[up][j])
            up += 1
            if up > down:
                break
            for i in range(up,down+1):
                ans.append(matrix[i][right])
            right-=1
            if left > right:
                break
            for j in range(left,right+1):
                ans.append(matrix[down][right+left-j])
            down -= 1
            if up > down:
                break
            for i in range(up,down+1):
                ans.append(matrix[down+up-i][left])
            left+=1
            if right < left:
                break
        return ans

 

公開された82元の記事 ウォンの賞賛2 ビュー4368

おすすめ

転載: blog.csdn.net/qq_22498427/article/details/104744993
おすすめ