LeetCode--Add Two Numbers(链表)

来源:互联网 发布:阿里云服务器开发端口 编辑:程序博客网 时间:2024/05/16 19:49

双链表的加法。

代码:

/** * 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) {        vector<int> ans;        int overFlow = 0;        ListNode* tmpNode = NULL;        while(l1 != NULL||l2 != NULL||overFlow != 0)        {            int tmpVal,val;            if(l1 != NULL&&l2 != NULL)            {                tmpVal = l1->val+l2->val+overFlow;                if(tmpVal >= 10)                {                    val = tmpVal%10;                    overFlow = tmpVal/10;                }                else                {                    val = tmpVal;                    overFlow = 0;                }            }            else if(l1 == NULL&&l2 == NULL)            {                val = overFlow;                overFlow = 0;            }            else if(l1 == NULL)            {                tmpVal = l2->val+overFlow;                if(tmpVal >= 10)                {                    val = tmpVal%10;                    overFlow = tmpVal/10;                }                else                {                    val = tmpVal;                    overFlow = 0;                }            }            else if(l2 == NULL)            {                tmpVal = l1->val+overFlow;                if(tmpVal >= 10)                {                    val = tmpVal%10;                    overFlow = tmpVal/10;                }                else                {                    val = tmpVal;                    overFlow = 0;                }            }            ans.push_back(val);            if(l1)            {                l1 = l1->next;            }            if(l2)            {                l2 = l2->next;            }        }        int nSize = ans.size();        for(int i = nSize-1;i >= 0;i--)        {            ListNode* newNode = new ListNode(ans[i]);            newNode->next = tmpNode;            tmpNode = newNode;        }        return tmpNode;    }};
0 0