1, supprimer la liste des noeuds en double
Dans Énuméré liés nœuds de liste en double, supprimez la liste des nœuds en double, le noeud ne conserve pas répété, retourne la liste des pointeurs de tête. Par exemple, la liste 1-> 2-> 3-> 3-> 4-> 4-> 5 1- bilan> 2-> 5.
classe Solution: DEF deleteDuplication (auto, PHEAD): # le code Write ici Fond d' écran # juge si la liste est vide SI pas PHEAD: retour Aucun pPreNode = Aucun # avant que vous voulez supprimer un nœud de stockage de noeud pNode = PHEAD # définir le noeud début # démarrer le cycle tandis que le • pNode: pNext = pNode.next needDelete = False # détermine si deux noeuds adjacents est égale à la valeur de iF pNext et pNext.val == pNode.val: needDelete = Vrai # Sinon égal à un arrière, pPreNode pointant vers l'avant du noeud IF ne needDelete: pPreNode = pNode pNode = pNode.next # Si elles sont égales à commencer à enlever l'autre : Val = pNode.val # initialize la valeur du nœud à supprimer pDeleteNode pNode = # définir le nœud à supprimer # égaux pour juger si le nœud actuel à supprimer et val est vide et le tout pDeleteNode et pDeleteNode.val == val: pNext = pDeleteNode.next del pDeleteNode# Supprimer noeuds pDeleteNode = pNext # après le nœud de déplacement # Si vous voulez supprimer un nœud contient le nœud de tête initial, il doit être le premier noeud à la position du noeud courant IF non pPreNode: PHEAD = pNext # Si vous ne voulez pas supprimer un noeud comprenant un premier noeud, le noeud se connecte le reste : pPreNode.next = pNext # depuis le noeud traversant les plus récentes • pNode = pNext # retourner le noeud tête retour PHEAD
Classe Solution: def deleteDuplicates (auto, tête: ListNode) -> ListNode: ans = tête en tête =! Aucun: si head.next = Aucun! et head.next.val == head.val: head.next = tête. next.next autre : tête = head.next retour ans
classe Solution: DEF deleteDuplication (auto, PHEAD): # le code écrire ici Wallpaper IF ne PHEAD ou pas pHead.next: # Si la liste est vide ou seulement un élément retour directement retour PHEAD IF pHead.val == pHead.next.val: # Si le nœud actuel à la répétition suivante de noeud, continuer à trouver s'il y a double p = pHead.next.next le tout p et p.val == pHead.val: # Si le point de jonction p est pas vide et dont la valeur répéter le noeud courant (PHEAD) est égal à p = p.next # p continuer à le prochain quart de travail pour trouver jusqu'à ce qu'aucun double retour self.deleteDuplication (p) # fonction récursive est traitée comme le nœud de tête de la liste chaînée p # Si le noeud courant et le noeud suivant ne se répète pas, la fonction récursive est traité comme le noeud de tête de la liste liée pHead.next pHead.next = self.deleteDuplication (pHead.next) retour PHEAD