题目描述
Java解法
/**
* 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 l3=new ListNode(0);
ListNode l4=l3;
int flag=0;
while(l1!=null&&l2!=null)
{
if((l1.val+l2.val)>=10)
{
if(flag==1)
{
l4.val=(l1.val+l2.val)%10+1;
}
else
{
l4.val=(l1.val+l2.val)%10;
flag=1;
}
}
else
{
if(flag==1&&(l1.val+l2.val)==9)
{
l4.val=0;
flag=1;
}
else if(flag==1&&(l1.val+l2.val)!=9)
{
l4.val=l1.val+l2.val+1;
flag=0;
}
else
{
l4.val=l1.val+l2.val;
flag=0;
}
}
l1=l1.next;
l2=l2.next;
if(l1==null&&l2==null&flag==0)
{
break;
}
if(l1==null&&l2==null&flag==1)
{
ListNode l5=new ListNode(1);
l4.next=l5;
l4=l5;
break;
}
ListNode l5=new ListNode(0);
l4.next=l5;
l4=l5;
}
while(l1!=null)
{
if(flag==1&&l1.val==9)
{
l4.val=0;
flag=1;
}
else if(flag==1&&l1.val!=9)
{
l4.val=l1.val+1;
flag=0;
}
else
{
l4.val=l1.val;
flag=0;
}
l1=l1.next;
if(l1==null&&flag==0)
{
break;
}
if(l1==null&&flag==1)
{
ListNode l5=new ListNode(1);
l4.next=l5;
l4=l5;
break;
}
ListNode l5=new ListNode(0);
l4.next=l5;
l4=l5;
}
while(l2!=null)
{
if(flag==1&&l2.val==9)
{
l4.val=0;
flag=1;
}
else if(flag==1&&l2.val!=9)
{
l4.val=l2.val+1;
flag=0;
}
else
{
l4.val=l2.val;
flag=0;
}
l2=l2.next;
if(l2==null&&flag==0)
{
break;
}
if(l2==null&&flag==1)
{
ListNode l5=new ListNode(1);
l4.next=l5;
l4=l5;
break;
}
ListNode l5=new ListNode(0);
l4.next=l5;
l4=l5;
}
return l3;
}
}