Menu
CoddyTech

Redundant Connection

Uma rede começou como uma árvore: n nós, numerados de 1 a n, conectados por n-1 arestas não direcionadas, sem ciclos. Em seguida, foi adicionada mais uma aresta entre dois nós que não estavam conectados diretamente, então a lista edges agora contém n arestas e exatamente um ciclo.

Retorne uma aresta que você possa remover para que as outras n-1 arestas formem novamente uma árvore. Se várias arestas servirem, retorne a que aparece por último em edges, como o par [a, b], exatamente como está escrito ali.

Função

findRedundantConnection(edges: integer-2d-array) → integer-array
edgesinteger-2d-array
as n arestas não direcionadas, cada uma um par [a, b] de nós numerados a partir de 1
Retornainteger-array
o arco do ciclo que aparece por último em edges, escrito exatamente como está lá

Restrições

  • 3 ≤ n ≤ 5000, em que n = edges.length
  • edges[i] = [a, b] com 1 ≤ a, b ≤ n e a ≠ b
  • Nenhuma aresta aparece duas vezes, em nenhuma das direções.
  • As arestas conectam todos os n nós e contêm exatamente um ciclo.

Exemplos

Entrada
edges = [[1, 2], [1, 3], [2, 3]]
Saída
[2, 3]
Explicação
As três arestas formam o triângulo 1, 2, 3, então remover qualquer uma delas deixa uma árvore. [2, 3] vem por último na lista.
challenge icon

Para ir além

Se as arestas fossem direcionadas e o grafo original fosse uma árvore enraizada, qual aresta você removeria quando a aresta extra dá a um nó dois pais?

Redefinir código
def findRedundantConnection(edges):
    # Escreva o código aqui

Teste #1

Teste #2

Argumento

edges = [[1, 2], [1, 3], [2, 3]]

Saída Esperada

[2, 3]