Menu
CoddyTech

Reverse Linked List

Vous disposez d’une liste chaînée simple stockée dans le tableau next : le nœud i pointe vers le nœud next[i], -1 marque la fin de la liste et la tête est le nœud 0. Les nœuds ne sont pas stockés dans l’ordre de la liste, suivez donc les liens.

Inversez la liste en inversant chaque lien, de sorte que l’ancien dernier nœud devienne la tête et que le nœud 0 devienne le dernier nœud, pointant vers -1. Renvoyez le tableau next mis à jour, qui a la même longueur que le tableau d’entrée.

Fonction

reverseList(next: integer-array) → integer-array
nextinteger-array
l’index du nœud vers lequel chaque nœud pointe, ou -1 pour le dernier nœud
Renvoieinteger-array
le tableau suivant de la liste inversée

Contraintes

  • 1 ≤ next.length ≤ 5000
  • Chaque next[i] vaut -1 ou un indice de nœud compris entre 0 et next.length-1.
  • En partant du nœud 0, la liste visite chaque nœud exactement une fois, puis atteint -1. Il n’y a pas de cycle.

Exemples

Entrée
next = [1, 2, 3, -1]
Sortie
[-1, 0, 1, 2]
Explication
La liste est 0 → 1 → 2 → 3. Inversée, elle devient 3 → 2 → 1 → 0, donc le nœud 3 pointe vers 2, le nœud 2 vers 1, le nœud 1 vers 0, et le nœud 0 vers -1.

lock icon+11 tests cachés à la soumission

challenge icon

Pour aller plus loin

Peux-tu inverser uniquement la partie de la liste comprise entre la position left et la position right, en laissant les nœuds qui la précèdent et la suivent à leur place ?

Réinitialiser le code
def reverseList(next):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Cas 3

Entrée

next = [1, 2, 3, -1]

Attendu

[-1, 0, 1, 2]