码迷,mamicode.com
首页 > 其他好文 > 详细

Add Two Numbers

时间:2014-12-24 16:08:33      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://www.cnblogs.com/kid551/p/4182496.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!