给出两个链表 3->1->5->null 和 5->9->2->null,返回8->0->8->null
class Solution {
public:
/**
* @param l1: the first list
* @param l2: the second list
* @return: the sum list of l1 and l2
*/
ListNode *addLists(ListNode *l1, ListNode *l2) {
// write your code here
if(l1 == NULL){
return l2;
}
else if(l2 == NULL){
return l1;
}
int carry = 0;
ListNode *sum = new ListNode(0);
ListNode *p = sum;
while(l1 != NULL && l2 != NULL){
int value = l1->val + l2->val + carry;
carry = value/10;
value = value%10;
sum->next = new ListNode(value);
sum = sum->next;
l1 = l1->next;
l2 = l2->next;
}
while(l1 != NULL){
int value = l1->val + carry;
carry = value/10;
value = value%10;
sum->next = new ListNode(value);
sum = sum->next;
l1 = l1->next;
}
while(l2 != NULL){
int value = l2->val + carry;
carry = value/10;
value = value%10;
sum->next = new ListNode(value);
sum = sum->next;
l2 = l2->next;
}
while(carry==1){
sum->next = new ListNode(1);
carry = 0;
}
return p->next;
}
};
1. 通过sum->next = new ListNode(value);不断增加结果链表;
2. 善用 /10 %10,相比较于判断大于10要方便许多。