lintcode-链表求和
2017-08-12 19:34
239 查看
描述
你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。样例
给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null思路
先说一下这道题什么意思吧,我刚开始都没看懂。。。有两个链表。链表中包含一个整数(倒序),每个结点的值是整数的一位数,第一个结点是个位,第二个结点是十位……以此类推。例如链表一,表示513,链表二,表示295 。513+295 = 808。相加之后的结果也要倒序存储在链表中。
因为是求和,首先新建一个新单链表,将求和以后的结果存储在其中。在链表一和链表二非空的情况下,个位和个位相加,十位与十位相加……要注意,如果相加的结果大于十,要进位,我们定义一个整形carry,表示相加后的值。当两个链表都遍历完成以后,注意是否有进位,若有,还需再创建一个新结点。
代码实现
ListNode *addLists(ListNode *l1, ListNode *l2) { ListNode *head = new ListNode(0); //创建新链表 ListNode *point = head; int carry = 0; while (true) { if(l1 != NULL){ carry += l1->val; l1 = l1->next; } if(l2 != NULL){ carry += l2->val; l2= l2->next; } point->val = carry % 10; carry /= 10; if(l1 != NULL || l2!=NULL || carry != 0){ point = (point->next = new ListNode(0)); //创建新结点 } else break; } return head; }
PS:有哪里不对的还请大家指正!
相关文章推荐
- [LintCode]167.链表求和
- LintCode-[中等] 221. 链表求和 II
- LintCode_167_链表求和
- LintCode_167_链表求和
- lintcode-167-链表求和
- LintCode-链表求和
- lintcode ----链表求和
- lintcode 链表求和
- LintCode-第168题 链表求和
- lintcode(221)链表求和 II
- 链表求和(LintCode)
- LintCode【简单】167. 链表求和 。代码及思路
- LintCode 第167题目 链表求和
- 链表求和 II-LintCode
- [Lintcode] #167 链表求和
- LintCode | 167. 链表求和
- 链表求和(LintCode)
- lintcode-链表求和
- lintcode,167,链表求和
- LintCode 链表求和