首页 > 其他 > 详细

Add Two Numbers

时间:2014-12-24 16:06:17      阅读:236      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!