class Solution{
public ListNode addTwoNumbers(ListNode l1, ListNode l2){
if(l1 == null) return l2;
if(l2 == null) return l1;
ListNode dummy = new ListNode(0);
ListNode current = dummy;
int carry = 0;
while(l1!=null && l2!=null){
int digit = l1.val + l2.val + carry;
carry = digit / 10;
int val = digit % 10;
ListNode newNode = new ListNode(val);
current.next = newNode;
current = current.next;
l1 = l1.next;
l2 = l2.next;
}
while(l1!=null){
int digit = l1.val + carry;
carry = digit / 10;
int val = digit % 10;
ListNode newNode = new ListNode(val);
current.next = newNode;
current = current.next;
l1 = l1.next;
}
while(l2!=null){
int digit = l2.val + carry;
carry = digit / 10;
int val = digit % 10;
ListNode newNode = new ListNode(val);
current.next = newNode;
current = current.next;
l2 = l2.next;
}
if(carry!=0) current.next = new ListNode(1);
return dummy.next;
}
}
归纳:
1.l1.val直接获取数值,l1.next指向下一个node节点
2.dummy.next输出顺序是第一个节点到最后一个
该代码实现了一个将两个非负整数表示为链表的节点,然后相加的功能。通过创建一个哑节点dummy作为新链表的头节点,逐位进行加法运算,并处理进位问题。最后返回新链表的头节点。
757

被折叠的 条评论
为什么被折叠?



