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;
        }
    };
    
  • 相关阅读:
    匿名内部类详解
    成员内部类详解
    内部类
    局部内部类详解
    switch
    Enum 类型
    循环
    标号
    软件开发模型
    RUP
  • 原文地址:https://www.cnblogs.com/kid551/p/4182496.html
Copyright © 2011-2022 走看看