Para provar oferta de segurança - atravessar a matriz de fora para dentro

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

 

Publicado 82 artigos originais · ganhou elogios 2 · Vistas 4368

Acho que você gosta

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