LeetCode---2. 两数相加

Posted hhboboy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode---2. 两数相加相关的知识,希望对你有一定的参考价值。

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     struct ListNode *next;
 6  * };
 7  */
 8 
 9 
10 struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
11     struct ListNode* p1 = l1;
12     struct ListNode* p2 = l2;
13     struct ListNode* p3 = NULL;
14     struct ListNode* sum = NULL;
15     struct ListNode* tempSum = NULL;
16 
17     unsigned short flag = 0;
18 
19     sum = (struct ListNode*)malloc(sizeof(struct ListNode));
20     sum->val = 0;
21     sum->next = NULL;
22     tempSum = sum;
23 
24     if ((p1 == NULL) && (p2 == NULL))
25     {
26         return sum;
27     }
28 
29     while ((p1 != NULL) || (p2 != NULL))
30     {
31         if (p1 != NULL)
32         {
33             tempSum->val += p1->val;
34             if (p1->next == NULL)
35             {
36                 p1 = NULL;
37             }
38             else
39             {
40                 p1 = p1->next;
41             }
42         }
43         if (p2 != NULL)
44         {
45             tempSum->val += p2->val;
46             if (p2->next == NULL)
47             {
48                 p2 = NULL;
49             }
50             else
51             {
52                 p2 = p2->next;
53             }
54         }
55 
56         flag = tempSum->val / 10;
57         tempSum->val = tempSum->val % 10;
58         
59         if(((p1 != NULL) || (p2 != NULL)) || (flag != 0))
60         {
61             p3 = (struct ListNode*)malloc(sizeof(struct ListNode));
62             p3->val = flag;
63             p3->next = NULL;
64             tempSum->next = p3;
65             tempSum = p3;
66         }
67     }
68 
69     return sum;
70 }

 

以上是关于LeetCode---2. 两数相加的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 2 两数相加

Leetcode 2. 两数之加(带图)

LeetCode- 2 - 两数相加(链表) - Java

leetcode 2 两数相加

python刷LeetCode:2.两数相加

leetcode:2. 两数相加