LeetCode 2.两数相加

Posted lvvly

tags:

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

给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。

你可以假设除了数字 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  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
12         ListNode* p1=l1;
13         ListNode* p2=l2;
14         ListNode* result=new ListNode(0);
15         ListNode* tail=result;
16         int i=0;
17         int n=0;
18         while(p1&&p2)
19         {
20             i=p1->val+p2->val;
21             if(i+n>9)
22             {
23                 tail->val=(i+n)%10;
24                 n=1;
25             }
26             else
27             {
28                 tail->val=i+n;
29                 n=0;
30             }
31             p1=p1->next;
32             p2=p2->next;
33             if(p1||p2)
34             {
35                 tail->next=new ListNode(0);
36                 tail=tail->next;   
37             }
38         }
39         while(p1)
40         {
41              if(p1->val+n>9)
42             {
43                 tail->val=(p1->val+n)%10;
44                 n=1;
45             }
46             else
47             {
48                 tail->val=p1->val+n;
49                 n=0;
50             }
51             p1=p1->next;
52             if(p1)
53             {
54                 tail->next=new ListNode(0);
55                 tail=tail->next; 
56             }
57         }
58         while(p2)
59         {
60              if(p2->val+n>9)
61             {
62                 tail->val=(p2->val+n)%10;
63                 n=1;
64             }
65             else
66             {
67                 tail->val=p2->val+n;
68                 n=0;
69             }
70             p2=p2->next;
71             if(p2)
72             {
73                 tail->next=new ListNode(0);
74                 tail=tail->next; 
75             }
76         }
77         if(n)
78         {
79             tail->next=new ListNode(1);
80         }
81         return result;
82     }
83 };

 

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

leetcode 2 两数相加

LeetCode第2天 - 2. 两数相加

leetcode 算法题2 两数相加

Leetcode 2. 两数之加(带图)

leetcode-02 两数相加

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