445. Add Two Numbers II leetcode (list)

来源:互联网 发布:silverlight5 for mac 编辑:程序博客网 时间:2024/05/19 12:16

Add Two Numbers II
You are given two linked lists representing two non-negative numbers. The most significant digit comes first and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Follow up:
What if you cannot modify the input lists? In other words, reversing the lists is not allowed.
Example:
Input: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 8 -> 0 -> 7

更优化的方法,见:http://www.cnblogs.com/charlesblc/p/6013233.html

//目前并未想到更好的办法,目前只是用栈来实现ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {        if(NULL == l1 || NULL == l2)        {            return l1=NULL?l2:l1;        }        //采用栈来实现        stack<int> sta1;        stack<int> sta2;        stack<int> sta;        ListNode* p1 = l1;        ListNode* p2 = l2;        while(p1)        {            sta1.push(p1->val);            p1 = p1->next;        }        while(p2)        {            sta2.push(p2->val);            p2 = p2->next;        }        int c = 0;        while(!sta1.empty() && !sta2.empty())        {            int temp = sta1.top() + sta2.top() + c;            sta.push(temp % 10);            c = temp / 10;            sta1.pop();            sta2.pop();        }        if(!sta2.empty())        {            sta1 = sta2;        }        while(!sta1.empty())        {            int temp = sta1.top() + c;            sta.push(temp % 10);            c = temp / 10;            sta1.pop();        }        if(c == 1)        {            sta.push(c);        }        ListNode* head = (ListNode*)malloc(sizeof(ListNode));        head->val = sta.top();        sta.pop();        head->next = NULL;        ListNode* tail = head;        while(!sta.empty())        {            ListNode* temp = (ListNode*)malloc(sizeof(ListNode));            temp->val = sta.top();            temp->next = NULL;            tail->next = temp;            tail = temp;            sta.pop();        }        return head;    }
0 0
原创粉丝点击