0
votes

Le nœud de la liste liée saute la boucle et passer à nouveau paramètre suivant

J'essaie de pratiquer l'exemple de leetcode. Contribution - [2,4,3] [5,6,4]

La sortie attendue est = [7,0,8]; (2 + 5, 4 + 6, 3 + 4 + 1 (reportez-vous sur 1 du nœud 2)); Ce que je reçois, c'est [7,8];

q.Sext et p.Sext - saute l'ajout du 2e nœud et que l'addition uniquement pour le 1er et le 3ème noeud. Je ne suis pas capable de comprendre pourquoi le 2e noeud est ignoré. xxx

édité selon les réponses - j'ai vérifié ci-dessous le code de LEetCode. Il dit toujours que la sortie est [0,8] Au lieu de [7,0,8]

Voici le lien du problème: https://leetcode.com/problems/add-two-numbers/ xxx


1 commentaires

Remarque: p = p.Sext; si (p! = null) p = ps.Sext; Vous sautez un nœud ici, même avec Q.


3 Réponses :


3
votes

Vous avez un xxx

qui permet de sauter des indices impairs (0 à base de 0). Cela devrait être supprimé, comme seul xxx

suffirait


1 commentaires

J'ai essayé cela et édité ma question. S'il vous plaît vérifier que cela ne fonctionne toujours pas



3
votes

Vous incrempez à la fois le pointeur code> SNO CODE> SOIT que vous ne le devriez. Dans la présente partie:

    while(p != null || q != null)
    {
        int x = (p != null) ? p.val :0 ;
        int y = (q != null) ? q.val :0 ;
        int sum = carry + x + y ;
        carry = sum / 10;
        curr.next = new ListNode(sum % 10);
        p=p.next; /* You increment the pointers right after this */
        q=q.next;
        if(p != null)p = p.next; // You don't even need this if statement either, thats what the while loop checks.
        if(q != null)q = q.next;
    }


4 commentaires

Droite. Bonne prise sur les deux problèmes.


J'ai essayé cela et édité ma question. S'il vous plaît vérifier que cela ne fonctionne toujours pas


Parce que j'ai dit que vous devez mettre un && au lieu de ||, puis mettre des chiffres supplémentaires par la suite.


Parce que vous devez mettre un && au lieu de || Dans la boucle tandis que et ajoute des nombres non nuls après. Regardez ma solution pour voir ce que je veux dire.



2
votes
  1. Comme déjà mentionné dans d'autres réponses, p et q sont avancés deux fois dans chaque itération (avec le risque d'un nullpointException BTW).
  2. aussi, curr n'est jamais avancé, donc extra.next est écrasé à chaque itération.
  3. Votre méthode renvoie curr qui pointe vers le dernier élément de la liste à la fin de la méthode. Essayez de retourner extra.next à la place (ou extra s'il est null et que vous avez besoin d'au moins un élément). XXX


0 commentaires