Para probar la oferta de seguridad - atravesar la matriz de afuera hacia adentro

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

 

Publicado 82 artículos originales · ganado elogios 2 · Vistas 4368

Supongo que te gusta

Origin blog.csdn.net/qq_22498427/article/details/104744993
Recomendado
Clasificación