タイトル説明
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