LeetCode题目----两数相加
2019-05-30 11:13
337 查看
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
[code]输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807
两种方法:
方法一:先写一个函数get可以得到任何一个链表所存储的整数,然后再写一个函数save可以将任何整数存储到链表中,在最后的函数里边分别调用这两个函数即可完成任务,缺陷就是用这个方法会出现溢出问题,整数不能太大。
[code]#inlcude<cmath> class Solution { public: int get(ListNode* ll) {// double a = 0; int i = 0; if (ll == NULL) return -1; while (ll != NULL) { a += pow(10, i)*(ll->val); ll = ll->next; i++; } return a; } ListNode* save(int n) { ListNode* l = new ListNode(0); ListNode* p = l; if (n<10) { l->val = n; return l; } l->val = n % 10; n = (n - n % 10) / 10; while (n) { // p->next=new ListNode(0) p->next = new ListNode(n % 10); p = p->next; n = (n - n % 10) / 10; } return l; } ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { int n = get(l1) + get(l2); return save(n); } };
方法二:从链表头到尾,按照加法法则来完成任务。
[code]/** * 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) { if(l1==NULL||l2==NULL) return NULL; ListNode* daan=new ListNode(0); ListNode* p = daan; int sum=0; int dev=0; while(l1||l2||dev) { if(l1) sum+=l1->val; if(l2) sum+=l2->val; p->next = new ListNode((sum+dev)%10); p=p->next; if(sum+dev>=10) dev = 1; else dev = 0; sum=0; if(l1) l1=l1->next; if(l2) l2= l2->next; } return daan->next; } };
相关文章推荐
- LeetCode题目C++实现:2. 两数相加
- leetcode 链表里的两数相加 C++实现
- LeetCode 题目之 数组两数之和问题
- LeetCode - 66/67 - 两数相加加法模拟
- leetcode题目 寻找和为SUM的两数(O(nlogn)和O(n)解法)
- Leetcode(C++)——2. 两数相加
- 从零开始刷LeetCode:[2] 两数相加
- LeetCode 2. 两数相加
- 【LeetCode-2】 两数相加 (链表)
- Leetcode每日一道 -- 两数相加
- leetcode刷题第一天~两数相加
- LeetCode-2 两数相加 Add Two Numbers
- 从零打卡leetcode之day 2---两数相加
- LeetCode刷题记: 两数相加
- LeetCode题目C++实现:1. 两数之和
- Leetcode 第二题,两数链表相加
- leetcode 1 Two sum(两数相加)
- 【LeetCode】2. 两数相加(Add Two Numbers,28.6%,中等)
- 刷LeetCode(1)——两数相加
- LeetCode 02. 两数相加(链表) 03.最大不重复的字符串