167链表求和

xiaoxiao2021-02-28  82

题目描述:你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。

样例 给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null

注意点:如果两个数相加结束之后,进位不为零,此时表示,结果值比原来的链表要更长一位。此时需要单独处理,增加一个节点。Wrong Answer

总耗时: 241 ms 49% 数据通过测试. 输入 1->1->1->1->1->null 9->8->8->8->8->null 输出 0->0->0->0->0->0->null 期望答案 0->0->0->0->0->1->null

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: /** * @param l1: the first list * @param l2: the second list * @return: the sum list of l1 and l2 */ ListNode *addLists(ListNode *l1, ListNode *l2) { if(l1==NULL) { return l2; } if(l2==NULL) { return l1; } int jw=0; int temp=0; ListNode*dummy=new ListNode(0); ListNode*p=dummy; while(l1!=NULL&&l2!=NULL) { temp=l1->val+l2->val+jw; jw=temp/10; temp=temp; p->next=new ListNode(temp); p=p->next; l1=l1->next; l2=l2->next; } while(l1!=NULL) { temp=l1->val+jw; jw=temp/10; temp=temp; p->next=new ListNode(temp); p=p->next; l1=l1->next; } while(l2!=NULL) { temp=l2->val+jw; jw=temp/10; temp=temp; p->next=new ListNode(temp); p=p->next; l2=l2->next; } if(jw!=0) { p->next=new ListNode(jw); } return dummy->next; // write your code here } };
转载请注明原文地址: https://www.6miu.com/read-45196.html

最新回复(0)