LeetCode题目C++实现:2. 两数相加
2018-11-22 16:48
453 查看
-
2.两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807 -
参考代码
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode *head=(ListNode *)new ListNode(0); ListNode *curr=head; int z=0; int x,y; while(l1!=NULL||l2!=NULL) { x=(l1!=NULL)?l1->val:0; y=(l2!=NULL)?l2->val:0; ListNode* node=(ListNode *)new ListNode((x+y+z)%10); z=(x+y+z)/10; curr->next=node; curr=node; if(l1!=NULL) l1=l1->next; if(l2!=NULL) l2=l2->next; } if(z!=0) { ListNode* node=(ListNode *) new ListNode(z); curr->next=node; curr=node; } return head->next; /* int z=0,num; ListNode* l3=(ListNode*)new ListNode(0); ListNode* root=l3; ListNode* curr; while(l1!=NULL&&l2!=NULL) { num=(l1->val+l2->val+z)%10; z=(l1->val+l2->val+z)/10; root->val=num; ListNode* node=(ListNode*)new ListNode(0); root->next=node; curr=root; root=node; l1=l1->next; l2=l2->next; } while(l1!=NULL) { num=(l1->val+z)%10; z=(l1->val+z)/10; root->val=num; ListNode* node=(ListNode*)new ListNode(0); root->next=node; curr=root; root=node; l1=l1->next; } while(l2!=NULL) { num=(l2->val+z)%10; z=(l2->val+z)/10; root->val=num; ListNode* node=(ListNode*)new ListNode(0); root->next=node; curr=root; root=node; l2=l2->next; } if(z!=0) { root->val=z; } else { delete root; curr->next=NULL; } return l3; */ } };
下面注释掉的是自己写的辣鸡代码,上面是看过答案写的。大佬果然就是不一样,自己写的代码根本不能看啊有木有???
相关文章推荐
- leetcode 链表里的两数相加 C++实现
- LeetCode题目C++实现:3. 无重复字符的最长子串
- LeetCode2. python实现:两数相加问题☆☆
- leetcode算法题:两数相加(Java实现-效率超过100%提交者)
- LeetCode的medium题集合(C++实现)十三
- leetcode题目 寻找和为SUM的两数(O(nlogn)和O(n)解法)
- 【编程题目】数值的整数次方——关于代码完整性及错误处理方式的探讨(C++实现)
- leetcode 214:Shortest Palindrome 题目分析 与使用KMP算法的java实现
- LeetCode-888.Fair Candy Swap 公平交换糖果(C++实现)
- LeetCode twosum C++ map实现
- LeetCode-2. Add Two Numbers(链表实现数字相加)
- C++链表实现多项式相加
- 腾讯秋招上机题目游戏任务标记C++实现
- LeetCode:1_TwoSum--C++实现
- 力扣第二题(两数相加)C++
- 大数相加的C++简单实现
- 算法题目一:全排列(C++实现)
- LeetCode 2 两数相加(链表)
- LeetCode 之 Rotate Image — C/C++ 实现
- 【LeetCode】205 Isomorphic Strings (c++实现)