título Descripción
Ingrese una matriz, con el fin de fuera a dentro en un orden hacia la derecha para imprimir secuencialmente para cada número, por ejemplo, si se introduce la siguiente 4 X 4 matriz: 1,234,567,891,011,121,314 15 imprimen secuencialmente 16 1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10 digitales.
Entrada n m matriz *, y devuelve una lista
ideas:
¿Quieres empezar con una recursiva, la recursividad no puede resolver el problema y encontró que la longitud de las filas de la matriz no quieren recibir. Parece fuera de rango.
A continuación, lea las respuestas de otras personas, con los dos pares de manos!
arriba, abajo, izquierda, derecha cuando hay cualquier par de punteros se encuentran, y muestra que esta matriz de dos dimensiones de recorrido 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