创建哨兵节点在返回的链表节点之前,之后采用节点指针遍历,注意判断终止条件,如果有进位也要继续。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode head=new ListNode();//哨兵节点
ListNode current=head;
int rem=0;
while(l1!=null||l2!=null||rem!=0){
if (l1!=null)rem+=l1.val;
if (l2!=null)rem+=l2.val;
current.next=new ListNode(rem%10);
current=current.next;
rem/=10;
if(l1!=null)l1=l1.next;
if(l2!=null)l2=l2.next;
}
return head.next;
}