首页 > 代码库 > Add Two Numbers
Add Two Numbers
Problem Statement
You 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
The intuitive and easy addition is what we do by hand. So, the only problem is how to implement it exactly by list. The below code is elegant, which is filled with small list move trick.
class Solution {public: ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { ListNode *t1 = l1, *t2 = l2; ListNode res(0), *l = &res; int over = 0; while(t1 || t2 || over){ int sum = (t1 ? t1->val : 0) + (t2 ? t2->val : 0) + over; l->next = new ListNode(sum % 10); l = l->next; over = sum / 10; t1 = t1 ? t1->next : t1; t2 = t2 ? t2->next : t2; } return res.next; }};
Add Two Numbers
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。