zoukankan      html  css  js  c++  java
  • 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;
        }
    };
    
  • 相关阅读:
    2019春第一次实验报告
    2019春第二次实验报告
    第十二周编程总结
    第十一周编程总结
    第十周作业
    C语言II博客作业04
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    学期总结
  • 原文地址:https://www.cnblogs.com/kid551/p/4182496.html
Copyright © 2011-2022 走看看