LeetCode 2. Add two num
内容描述
给定两个链表代表两个非负数,求这两个数的和
(2 -> 4 -> 3) + (5 -> 6 -> 4)
因为 342 + 465 = 807
所以返回 7 -> 0 -> 8
注意进位!
class ListNode {
public:
int val;
ListNode *next;
ListNode() {}
ListNode(int val1) : val(val1), next(NULL) {
}
};
ListNode add_two_nums(ListNode *l1, ListNode *l2) {
ListNode ret(0);
ListNode *current = &ret;
int carry = 0;
while (l1 && l2) {
int dig=l1->val +l2-> val +carry;
int val=dig%10;
carry=dig/10;
ListNode *newNode=new ListNode(val);
current->next=newNode;
current=current->next;
l1=l1->next;
l2=l2->next;
}
if(l2){
l1=l2;
}
while(l1){
int val=(l1->val+carry)%10;
carry=(l1->val+carry)/10;
current->next=new ListNode(val);
current=current->next;
l1=l1->next;
}
// do not forget!
if(carry!=0){
current->next=new ListNode(carry);
}
return ret;
}