Add Two Numbers

来源:互联网 发布:什么是图灵机 知乎 编辑:程序博客网 时间:2024/06/08 01:35
-----QUESTION-----

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of theirnodes 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

-----SOLUTION-----

class Solution {public:    ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {        if(!l1) return l2;        if(!l2) return l1;        int sum = l1->val + l2->val;        int carry = sum/10;        sum = sum % 10;        ListNode* result = new ListNode(sum);        ListNode* pResult = result;        l1 = l1->next;        l2 = l2->next;        while(l1 && l2)        {            sum = l1->val + l2->val + carry;            carry = sum/10;            sum = sum % 10;                        pResult->next = new ListNode(sum);                    l1 = l1->next;            l2 = l2->next;            pResult = pResult->next;        }        if(carry!=0)        {            if(!l1&&!l2)             {                pResult->next = new ListNode(carry);                return result;            }            if(l1)            {                pResult->next = l1;            }            else if(l2)            {                pResult->next = l2;            }            while(carry !=0 && pResult->next)            {                sum = pResult->next->val+carry;                carry = sum/10;                sum = sum % 10;                pResult->next->val = sum;                pResult = pResult->next;            }            if(carry!=0) pResult->next = new ListNode(carry);        }        else if(l1) pResult->next = l1;        else if(l2) pResult->next = l2;        return result;    }};


0 0
原创粉丝点击