diff options
| author | crupest <crupest@outlook.com> | 2020-07-15 16:52:08 +0800 | 
|---|---|---|
| committer | crupest <crupest@outlook.com> | 2020-07-15 16:52:08 +0800 | 
| commit | 357142db7dddeba12d95ade496abf0e9732bfc1d (patch) | |
| tree | c4c9b687de61b9b80f23cd5f8e3eea0a88c14652 /works/solutions/cpp | |
| parent | 200e723d8e6daf7f8318e363cc96843d7807cbe5 (diff) | |
| download | crupest-357142db7dddeba12d95ade496abf0e9732bfc1d.tar.gz crupest-357142db7dddeba12d95ade496abf0e9732bfc1d.tar.bz2 crupest-357142db7dddeba12d95ade496abf0e9732bfc1d.zip  | |
import(solutions): Add problem 2.
Diffstat (limited to 'works/solutions/cpp')
| -rw-r--r-- | works/solutions/cpp/2.cpp | 75 | 
1 files changed, 75 insertions, 0 deletions
diff --git a/works/solutions/cpp/2.cpp b/works/solutions/cpp/2.cpp new file mode 100644 index 0000000..cb954ae --- /dev/null +++ b/works/solutions/cpp/2.cpp @@ -0,0 +1,75 @@ +struct ListNode
 +{
 +    int val;
 +    ListNode *next;
 +    ListNode(int x) : val(x), next(NULL) {}
 +};
 +
 +class Solution
 +{
 +public:
 +    ListNode *addTwoNumbers(ListNode *l1, ListNode *l2)
 +    {
 +        ListNode *result;
 +        ListNode *tail;
 +        int carry = 0;
 +
 +        {
 +            int sum = l1->val + l2->val;
 +            if (sum > 9)
 +            {
 +                carry = 1;
 +                sum -= 10;
 +            }
 +
 +            result = new ListNode(sum);
 +            tail = result;
 +
 +            l1 = l1->next;
 +            l2 = l2->next;
 +        }
 +
 +        while (l1 || l2)
 +        {
 +            int sum = (l1 ? l1->val : 0) + (l2 ? l2->val : 0) + carry;
 +            if (sum > 9)
 +            {
 +                carry = 1;
 +                sum -= 10;
 +            }
 +            else
 +            {
 +                carry = 0;
 +            }
 +            tail->next = new ListNode(sum);
 +            tail = tail->next;
 +
 +            if (l1)
 +                l1 = l1->next;
 +            if (l2)
 +                l2 = l2->next;
 +        }
 +
 +        if (carry)
 +        {
 +            tail->next = new ListNode(1);
 +        }
 +
 +        return result;
 +    }
 +};
 +
 +int main()
 +{
 +    ListNode *l1 = new ListNode(2);
 +    l1->next = new ListNode(4);
 +    l1->next = new ListNode(3);
 +
 +    ListNode *l2 = new ListNode(5);
 +    l2->next = new ListNode(6);
 +    l2->next = new ListNode(4);
 +
 +    ListNode *result = Solution{}.addTwoNumbers(l1, l2);
 +
 +    return 0;
 +}
  | 
