Menu
CoddyTech

Longest Increasing Path in a Matrix

Você recebe matrix, uma grade de números inteiros com m linhas e n colunas, como uma lista de linhas. Um caminho se move de uma célula para outra, um passo para cima, para baixo, para a esquerda ou para a direita de cada vez (sem passos diagonais e sem passar de uma borda para a outra), e cada passo deve chegar a um valor estritamente maior. Retorne o número de células no caminho mais longo desse tipo. Uma única célula, por si só, é um caminho de 1 célula.

Função

longestIncreasingPath(matrix: integer-2d-array) → integer
matrixinteger-2d-array
a grade de valores, como uma lista de linhas de comprimento igual
Retornainteger
o número de células no caminho estritamente crescente mais longo

Restrições

  • 1 ≤ m, n ≤ 100, onde m = matrix.length e n = matrix[i].length
  • Cada linha tem o mesmo comprimento n.
  • 0 ≤ matrix[i][j] ≤ 231-1

Exemplos

Entrada
matrix = [[9, 8, 3], [2, 7, 4], [1, 6, 5]]
Saída
7
Explicação
O caminho 3, 4, 5, 6, 7, 8, 9 desce pela coluna da direita, segue para a esquerda pela linha inferior, sobe pela coluna do meio e vai para a esquerda até o 9 no canto: 7 células. O menor valor tem um resultado pior: a partir do 1, os melhores caminhos são 1, 2, 7, 8, 9 e 1, 6, 7, 8, 9, com 5 células cada.

lock icon+18 testes ocultos ao enviar

challenge icon

Para ir além

Você também pode retornar as células de um dos caminhos mais longos, e não apenas seu comprimento?

Redefinir código
def longestIncreasingPath(matrix):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

matrix = [[9, 8, 3], [2, 7, 4], [1, 6, 5]]

Esperado

7