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]; p>
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é. P> édité selon les réponses forts> - 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] p> Voici le lien du problème: https://leetcode.com/problems/add-two-numbers/ p>
3 Réponses :
Vous avez un qui permet de sauter des indices impairs (0 à base de 0). Cela devrait être supprimé, comme seul p> suffirait p> p>
J'ai essayé cela et édité ma question. S'il vous plaît vérifier que cela ne fonctionne toujours pas
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; }
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.
p code> et q code> sont avancés deux fois dans chaque itération (avec le risque d'un nullpointException code> BTW). li>
- aussi,
curr code> n'est jamais avancé, donc extra.next code> est écrasé à chaque itération. LI>
-
Votre méthode renvoie curr code> qui pointe vers le dernier élément de la liste à la fin de la méthode. Essayez de retourner extra.next code> à la place (ou extra code> s'il est null code> et que vous avez besoin d'au moins un élément). P>
XXX PRE> LI>
ol>
Remarque: p = p.Sext; si (p! = null) p = ps.Sext; Vous sautez un nœud ici, même avec Q.