ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(l1 == NULL) return l2;
if(l2 == NULL) return l1;
std::vector<int> a,b,c;
while(l1){
a.push_back(l1->val);
l1 = l1->next;
}
while(l2){
b.push_back(l2->val);
l2 = l2->next;
}
int i;
if(a.size() < b.size()){
c = a;
a = b;
b = c;
}
for(i =0;i <b.size();i++){
a[i] = a[i] + b[i];
if(a[i] >= 10)
{
a[i] = a[i] -10;
if(i+1<a.size())
a[i+1] += 1;
else
a.push_back(1);
}
}
for(;i<a.size(); i++)
{
if(a[i] >= 10)
{
a[i] =a[i] - 10;
if(i+1 < a.size())
a[i+1] += 1;
else
a.push_back(1);
}
}
ListNode *head,*current,*p;
head = new ListNode(a[0]);
current = head;
for(i = 1; i<a.size(); i++){
p = new ListNode(a[i]);
current->next = p;
current = p;
}
return head;
}
--------------------------------------------------------------------天道酬勤!