You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
此题很简单,不多说。
下面是我的代码:
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode node=null;
node=buildList(l1, l2, node);
return node;
}
public ListNode buildList(ListNode l1, ListNode l2,ListNode node){
int addDigit=0,v1,v2;
ListNode tmp=node;
while(!(l1==null&&l2==null)){
if(l1!=null)
v1=l1.val;
else
v1=0;
if(l2!=null)
v2=l2.val;
else
v2=0;
int value=v1+v2+addDigit;
int digit=value%10;
int add=value/10;
ListNode newNode=new ListNode(digit);
addDigit=add;
if(tmp==null){
tmp=newNode;
node=tmp;
}
else{
tmp.next=newNode;
tmp=tmp.next;
}
if(l1!=null)
l1=l1.next;
if(l2!=null)
l2=l2.next;
}
ListNode tmp2=node;
if(addDigit!=0){
while(tmp2.next!=null)
tmp2=tmp2.next;
tmp2.next=new ListNode(addDigit);
}
return node;
}