Add Two Numbers
2015-12-13 10:15
183 查看
每日算法——letcode系列
标签: 算法 C++ LetCode问题 Add Two Numbers
Difficulty: MediumYou are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
/** * 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) { } };
翻译
两链表对应数之和
难度系数:中等给定两个由正整数组成的链表,数在链表中是倒序存放的,并且每个节点上的数是一位整数。把这两上链表上的数相加并返回一个链表
输入: (2 -> 4 -> 3) + (5 -> 6 -> 4)
输出: 7 -> 0 -> 8
思路
题中为什么说倒序,因为如果(2 -> 4 -> 3)看成一个数应该是243,如果跟(5 -> 6 -> 4)564相加应该得807,但由于是倒序放的,应该先从高位相加。注意的是,题中没有说两个链表长度相同,我认为应该适应长度不相同的时候,还有就是相加后的链表有可能多一位。
代码
class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { if (l1 == nullptr && l1 == nullptr){ return nullptr; } ListNode* head = nullptr, **temp = &head; int carry = 0; while (l1 != nullptr || l2 != nullptr) { int a = getValAndMoveToNext(l1); int b = getValAndMoveToNext(l2); int newVal = (a + b + carry) % 10; carry = (a + b + carry) / 10; ListNode* node = new ListNode(newVal); *temp = node; temp = &node->next; } // 最后当carrry大于0(为1)时,应该进一位 if (carry > 0){ ListNode* node = new ListNode(carry); *temp = node; } return head; } private: int getValAndMoveToNext(ListNode* &l){ if (l == nullptr){ return 0; } int x = 0; x = l->val; l = l->next; return x; } };
相关文章推荐
- c语言学习笔记之文件包含
- Flex tree项目行上加toolTip提示(两种实现方式)
- multiset
- c语言学习笔记之条件编译
- 【bzoj1023】[SHOI2008]cactus仙人掌图
- python基础教程共60课-第35课continue
- zhphpframework(二十六) php+mysql 分页类
- 三个数混合运算和三层架构
- java 调试技巧
- android 常见的解决(mdpi、hdpi 、xhdpi、xxhdpi )屏幕调整
- [TroubleShooting]'trn\bak' is incorrectly formed. SQL Server cannot process this media family.
- 杭电ACM2576
- C#学习笔记——连接sqlserver数据库
- c语言学习笔记之宏定义
- 空类大小 http://blog.csdn.net/ianchoi/article/details/6335908
- Qt中文乱码问题
- 为什么 Linux Mint 比 Ubuntu好?
- HDU 5596 GTW likes gt 优先队列 BestCoder#66
- zhphp framework(二十五) mongodb 类
- 【Web】表单中使用post和get的区别