• Add Two Numbers


    You are given two non-empty linked lists representing two non-negative integers. 
    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. You may assume the two numbers do not contain any leading zero, except the number 0 itself. Example: Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8 Explanation: 342 + 465 = 807.






    /*
     * Definition for singly-linked list;
     * struct ListNode{
        int val;
        ListNode *next;
        ListNode(int x):val(x),next(NULL)
        {}
     };
    */
    
    class Solution {
    public:
        ListNode* addTwoNumbers(ListNode* a1, ListNode* a2){
            ListNode *res = new ListNode(-1);
            ListNode *cur = res;
            int carry = 0;
            while(a1 || a2){
                int n1 = a1 ? a1->val:0;    
                int n2 = a2 ? a2->val:0;    
                
                int sum = n1 + n2 + carry;
                carry = sum / 10;
                cur->next = new ListNode(sum % 10);
                cur = cur->next;
                if(a1) 
                    a1 = a1->next;
                if(a2) 
                    a2 = a2->next;
            }
            
            if(carry)
                cur->next = new ListNode(1);
            return res->next;
        }
    };
    怕什么真理无穷,进一寸有一寸的欢喜。---胡适
  • 相关阅读:
    MMA7660
    使用外设需要做的事情
    BH1750
    English
    2016年学习计划
    博客园
    TIM
    USART
    swift与oc的混合编程
    SVN工具如何创建分支和合并分支的
  • 原文地址:https://www.cnblogs.com/hujianglang/p/11415533.html
Copyright © 2020-2023  润新知