Leetcode Add two numbers链表相加
来源:互联网 发布:游族网络股份有限公司 编辑:程序博客网 时间:2024/05/18 20:33
这里给出别人写的一段代码,很简洁,但是不易理解。。。
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { int x=0, y=0, carry=0, sum=0; ListNode *h=NULL, **t=&h; while (l1!=NULL || l2!=NULL){ x = getValueAndMoveNext(l1); y = getValueAndMoveNext(l2); sum = carry + x + y; ListNode *node = new ListNode(sum%10); *t = node; t = (&node->next); carry = sum/10; } if (carry > 0) { ListNode *node = new ListNode(carry%10); *t = node; } return h; } int getValueAndMoveNext(ListNode* &l){ int x = 0; if (l != NULL){ x = l->val; l = l->next; } return x; }
下面给出自己的代码
其结果在最后也就是最高为处有个0,虽然对结果没什么影响,但是并不完美,
希望有懂得朋友给个解决方法
struct ListNode{ int val; ListNode *next; ListNode(int x) :val(x), next(NULL) {};}; ListNode* addTwoNumbers(ListNode* p1, ListNode* p2){ ListNode* result =new ListNode(0); ListNode* ptemp = result; int carry = 0; while (p1!=nullptr||p2!=nullptr) { int x =p1? p1->val:0; int y =p2? p2->val:0; int sum = x + y + carry; carry = sum % 10; ptemp->val=carry; ListNode* temp=new ListNode(0); ptemp->next = temp; ptemp = ptemp->next; carry = sum / 10; if (p1!=nullptr) p1 = p1->next; if (p2!=nullptr) p2 = p2->next; } if (carry == 1) { ListNode* temp = new ListNode(0); temp->val = 1; ptemp->next = temp; } return result;}int main(){ ListNode* p1 = new ListNode(2); ListNode* p2 = new ListNode(4); ListNode* p3 = new ListNode(3); p1->next = p2; p2->next = p3; p3->next = nullptr; ListNode* p4 = new ListNode(5); ListNode* p5 = new ListNode(6); ListNode* p6 = new ListNode(4); ListNode* p7 = new ListNode(1); p4->next = p5; p5->next = p6; p6->next = p7; p7->next = nullptr; ListNode* result = addTwoNumbers(p1, p4); while (result) { cout << result->val << endl; result=result->next; } return 0;}
“`
0 0
- Add Two Numbers Leetcode 链表相加
- Leetcode Add two numbers链表相加
- 【LeetCode】链表相加 Add Two Numbers
- LeetCode Add Two Numbers两个链表数值相加
- LeetCode | Add Two Numbers(两个链表相加)
- [Leetcode]Add Two Numbers 链表实现大数字相加
- LeetCode-2. Add Two Numbers(链表实现数字相加)
- (leetcode)2. 两个链表相加Add Two Numbers--Java
- Add Two Numbers 链表相加
- Add Two Numbers 链表相加
- LeetCode 2 : Add Two Numbers ---- 单链表相加
- [Leetcode]Add Two Numbers链表数相加
- leetcode Add Two Numbers 两个数相加
- Add Two Numbers 把两个以链表形式表示的数相加 @LeetCode
- leetcode 5. 两个链表逐个元素相加 Add Two Numbers
- leetcode系列(30)Add Two Numbers 链表数字相加
- [Leetcode #2]Add Two Numbers 链表存储的两个正数相加
- LeetCode 2. Add Two Numbers -- 两个链表按序从头到尾相加,记录进位
- 【ppt入门教程】如何在ppt幻灯片中插入GIF格式动态图片
- AMCL定位
- Linux系统安装Redis
- 基于s3c6410 otg controller的gadget driver及usb枚举分 析
- JSON-lib框架
- Leetcode Add two numbers链表相加
- linux g_webcam.ko问题(续)
- Java 计数器Counter(一个FileReader ,FileWriter的例子)
- Android学习笔记之图像颜色处理(ColorMatrix)
- linux g_webcam.ko问题(续二) —— 在友善210上的限制
- [LeetCode] Count Numbers with Unique Digits
- 今天起决定写一个开源的建筑结构分析软件
- Reactor模式
- centos开启ssh连接