首页 > 代码库 > LeetCode "445. Add Two Numbers II"

LeetCode "445. Add Two Numbers II"

A natural stack based solution. Seriously, whey ‘Medium‘?

技术分享
/** * 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) {        stack<ListNode*> s1, s2;        ListNode *p = l1;        while(l1)        {            s1.push(l1); l1 = l1->next;        }        p = l2;        while(l2)        {            s2.push(l2); l2 = l2->next;        }                //        ListNode *pc = nullptr, *pp = nullptr;        int carry = 0;        while(!s1.empty() || !s2.empty())        {            int a1 = 0;            if(!s1.empty())            {                a1 = s1.top()->val;                s1.pop();            }                        int a2 = 0;            if(!s2.empty())            {                a2 = s2.top()->val;                s2.pop();            }                        int sum = (a1 + a2 + carry) % 10;            carry = (a1 + a2 + carry) / 10;                        pp = new ListNode(sum);            pp -> next = pc;            pc = pp;        }        if(carry)        {            pp = new ListNode(carry);            pp -> next = pc;        }                return pp;    }};
View Code

 

LeetCode "445. Add Two Numbers II"