LeetCode 第二題 兩數相加
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* p = l1;
ListNode* q = l2;
ListNode* r = new ListNode(0);
ListNode* m = r;
bool flag = false;
while(p != NULL && q!=NULL){
int sum = p->val + q->val;
if(flag == true)sum++;
flag = false;
if(sum >= 10)flag=true;
ListNode *temp = new ListNode(sum%10);
m->next = temp;
m = m->next;
q=q->next;
p=p->next;
}
while(p){
int sum = p->val;
if(flag == true)sum++;
flag = false;
if(sum >= 10)flag=true;
ListNode *temp = new ListNode(sum%10);
m->next = temp;
m = m->next;
p=p->next;
}
while(q){
int sum = q->val;
if(flag == true)sum++;
flag = false;
if(sum >= 10)flag=true;
ListNode *temp = new ListNode(sum%10);
m->next = temp;
m = m->next;
q=q->next;
}
if(flag == true){
ListNode *temp = new ListNode(1);
m->next = temp;
}
return r->next;
}