445. Add Two Numbers II

来源:互联网 发布:js 3d 720度全景展示 编辑:程序博客网 时间:2024/06/11 07:29

1、题目描述

输入列表表示的两个数,正序的,返回两数之和的列表表示。


2、思路

用两个stack把两个列表的每一位数存起来。然后一位位相加就好,注意进位。每产生一个新的数字,都加在列表的前面。


3、代码

ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {        stack<int>a,b;        while(l1){            a.push(l1->val);            l1=l1->next;        }        while(l2){            b.push(l2->val);            l2=l2->next;        }        ListNode* ans = NULL;                int c=0;        while(a.size()&&b.size()){            int x  = a.top()+b.top()+c;            a.pop();b.pop();            ListNode* p = ans;            ans = new ListNode(x%10);            c=x/10;            ans->next = p;                    }        while(a.size()){            int x  = a.top()+c;            a.pop();            ListNode* p = ans;            ans = new ListNode(x%10);            c=x/10;            ans->next = p;                    }        while(b.size()){            int x  = b.top()+c;            b.pop();            ListNode* p = ans;            ans = new ListNode(x%10);            c=x/10;            ans->next = p;                    }        if(c>0)        {            ListNode* p = ans;            ans = new ListNode(c);            ans->next = p;        }            return ans;            }


原创粉丝点击