Если я правильно понял вашу проблему, я думаю, это потому, что вы создаете новый узел в конце цикла. В этой строке:
curr.next = new ListNode(-1);
При создании нового узла в конце цикла do...while
последний узел в списке всегда будет содержать этот -1
. Вам нужно оценить, было ли выполнено условие завершения, прежде чем создавать новый узел.
Попробуйте использовать приведенный ниже код, в котором я передал создание новых узлов в пост-условие:
public class Solution {
public ListNode AddTwoNumbers(ListNode l1, ListNode l2) {
ListNode l3 = new ListNode(-1), curr = l3;
for(int a=0, k = 0; l1 != null && l2 != null ; curr.next = new ListNode(-1), curr = curr.next)
{
if(k == 1)
a = l1.val + l2.val + 1;
else
a = l1.val + l2.val;
k = 0;
if(a >= 10){
curr.val = a - 10;
k = 1;
}
else
curr.val = a;
l1 = l1.next; l2 = l2.next;
}
return l3;
}
}