【Leetcode】Add Two Numbers

原创 2013年12月05日 17:22:42

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

题意:计算两个由逆序链表表示的正整数之和,并以逆序的链表输出。

这题较简单,为了节约空间,我没有新建结点,而是将结果保存在l1中,需要注意的有,当两个链表都走完时,如果此时的carrier(进位)为1,不要忘记要新建一个结点保存carrier的值。还有就是要用pre来维护链表之间的衔接。

class Solution {
public:
    ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
        // Note: The Solution object is instantiated only once and is reused by each test case.
        if(l1==NULL)
            return l2;
        if(l2==NULL)
            return l1;
        ListNode *Node1=l1,*Node2=l2,*pre=l1;
        int carrier=0;
        int num;
        while(Node1!=NULL&&Node2!=NULL)
        {
            num=Node1->val+Node2->val+carrier;
            if(num<10)
            {
                Node1->val=num;
                carrier=0;
            }
            else
            {
                Node1->val=num-10;
                carrier=1;
            }
            pre=Node1;
            Node1=Node1->next;
            Node2=Node2->next;
        }
        while(Node1!=NULL)
        {
            num=Node1->val+carrier;
            if(num<10)
            {
                Node1->val=num;
                carrier=0;
            }
            else
            {
                Node1->val=num-10;
                carrier=1;
            }
            pre=Node1;
            Node1=Node1->next;
        }
        while(Node2!=NULL)
        {
            num=Node2->val+carrier;
            if(num<10)
            {
                Node2->val=num;
                pre->next=Node2;
                carrier=0;
            }
            else
            {
                Node2->val=num-10;
                pre->next=Node2;
                carrier=1;
            }
            pre=Node2;
            Node2=Node2->next;
        }
        if(carrier)
        {
            ListNode *node=new ListNode(1);
            pre->next=node;
        }
        return l1;
    }
};


【python】【leetcode】【算法题目2—Add Two Numbers】

【python】【leetcode】【算法题目2—Add Two Numbers】 题目原文: You are given two linked lists representing two non-...
  • u014615155
  • u014615155
  • 2016年11月21日 12:05
  • 1802

(LeetCode)算法题目——Add Two Numbers

Add Two Numbers
  • lh470342237
  • lh470342237
  • 2017年07月31日 22:47
  • 57

【leetcode】Add Two Numbers 解析以及拓展

题目: You are given two linked lists representing two non-negative numbers. The digits are stored in r...
  • u013378502
  • u013378502
  • 2014年08月10日 10:19
  • 633

LeetCode刷题之第一题——Add Two Numbers

You are given two linked lists representing two non-negative numbers. The digits are stored in rever...
  • smilebluesky
  • smilebluesky
  • 2016年02月24日 21:41
  • 331

【Leetcode问题搬运翻译】Add two numbers

/** *本篇文章均为本人翻译,原问题链接:点击打开链接 */ 问题描述:你被给予两个非空链表,分别代表两个非负整数。这些数字以倒序的方式存储并且他们的每个节点都包含一个数字。添加两个数...
  • HeyWeCome
  • HeyWeCome
  • 2017年08月10日 10:50
  • 276

Add Two Numbers问题及解法

问题描述: You are given two non-empty linked lists representing two non-negative integers. The digits...
  • u011809767
  • u011809767
  • 2017年02月16日 09:17
  • 486

第十五周(Add Two Numbers)

第十四周(subsets,NP问题) 目录: 本周完成题目 主要过程思路 相关代码 一、本周完成题目 本周共完成2道题目,2道Medium。主要是关于子集的两个问题。 具...
  • qq_24486635
  • qq_24486635
  • 2017年05月30日 15:01
  • 93

算法练习:Add Two Numbers

https://leetcode.com/problems/add-two-numbers/?tab=Description
  • zhangf21
  • zhangf21
  • 2017年02月24日 11:18
  • 153

【LeetCode-面试算法经典-Java实现】【002-Add Two Numbers (单链表表示的两个数相加)】

有两个单链表,代表两个非负数,每一个节点代表一个数位,数字是反向存储的,即第一个结点表示最低位,最后一个结点表示最高位。求两个数的相加和,并且以链表形式返回。对两个链表都从第一个开始处理,进行相加,结...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月16日 07:10
  • 5064

LeetCode Add Two Numbers两个链表数值相加

Add Two Numbers You are given two linked lists representing two non-negative numbers. The digits ar...
  • kenden23
  • kenden23
  • 2013年11月20日 14:01
  • 1662
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Leetcode】Add Two Numbers
举报原因:
原因补充:

(最多只允许输入30个字)