título Descrição
Introduzir uma matriz, a fim de fora para dentro num sentido horário para imprimir sequencialmente para cada número, por exemplo, se introduzir a seguinte matriz 4 x 4: 1,234,567,891,011,121,314 15 sequencialmente impresso 16 digitais 1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
Entrada de n m * matriz, e retorna uma lista
ideias:
Quer começar com um recursivo, recursão não pode resolver o problema e descobriu que o comprimento de fileiras de matriz não quer gostar. Não parece fora de alcance.
Em seguida, ler as respostas de outras pessoas, com os dois pares de mãos!
cima, baixo, esquerda, direita quando há qualquer par de ponteiros se encontram, e mostra que esta travessia matriz bidimensional sobre
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