leetcode 2. Add Two Numbers

来源:互联网 发布:十大网络公关公司 编辑:程序博客网 时间:2024/06/05 15:44

题意:将两个链表相加,并且逆向进位,且可以进多1位数字1(增加一个节点)

输入:(2 - > 4 - > 3)+(5 - > 6 - > 4)

输出:7 - > 0 - > 8


分析: 时间复杂度O(n),空间复杂度O(n),n为最长的长度。

class Solution {public:    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {        ListNode *head=new ListNode(0);        ListNode *list=head;        int carry=0;    while(l1!=NULL||l2!=NULL){        int val1=0;        int val2=0;        int value=0;        if(l1!=NULL){            val1=l1->val;              l1=l1->next;        }        if(l2!=NULL){            val2=l2->val;            l2=l2->next;        }        value=val1+val2+carry;        list->next=new ListNode(value%10); //创建新结点存值        carry=value/10;        list=list->next;    }         if(carry>0)            list->next= new ListNode(carry);           return head->next;               }};



原创粉丝点击