题目
题意是用链表表示一个数,每个节点作为数字的一位,给定两个链表,返回两个数相加的结果。
该题没有什么特殊的技巧,两个链表对应的节点依次相加,并纪录是否进位,需要注意的是当两个数最后一位相加完毕后可能会发生进位。
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2)
{
if(l1==null)
return l2;
if(l2==null)
return l1;
int flag = 0;
ListNode head = new ListNode(-1);
ListNode p = head;
while(l1!=null||l2!=null)
{
int v1 = l1 == null? 0 : l1.val;
int v2 = l2 == null? 0 : l2.val;
int sum = v1+v2+flag;
flag = sum/10;
p.next= new ListNode(sum%10);
p = p.next;
if(l1!=null)
l1 = l1.next;
if(l2!=null)
l2 = l2.next;
}
if(flag!=0)
p.next = new ListNode(flag);
return head.next;
}
}