Add Two Numbers

来源:互联网 发布:淘宝优惠券有什么猫腻 编辑:程序博客网 时间:2024/06/04 17:43

问题描述

You are given two linked lists representing two non-negative numbers. 

The digits are stored in reverse order and each of their nodes 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

解决方案

class Solution {public:    ListNode *addTwoNumbers( ListNode *l1, ListNode *l2 ) {        ListNode *result = nullptr;    ListNode *current = nullptr;        int next = 0;    auto t1 = l1;    auto t2 = l2;                for( ; t1 != nullptr && t2 != nullptr; t1 = t1->next, t2 = t2->next ) {        int value = t1->val + t2->val + next;        next = value / 10;        auto *temp = new ListNode{ value % 10 };            if( result == nullptr ) {                result = temp;            } else {                current->next = temp;            }        current = temp;        }                for( ; t1 != nullptr; t1 = t1->next ) {        int value = t1->val + next;        next = value / 10;        auto *temp = new ListNode{ value % 10 };            current->next = temp;        current = temp;        }            for( ; t2 != nullptr; t2 = t2->next ) {        int value = t2->val + next;        next = value / 10;        auto *temp = new ListNode{ value % 10 };            current->next = temp;        current = temp;        }            if( next == 1 ) {        current->next = new ListNode{ 1 };    }        return result;    }};

0 0
原创粉丝点击