码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 2.两数相加

时间:2018-05-08 22:21:45      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:开头   public   int   null   个数   输入   val   数字   ret   

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

你可以假设除了数字 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.两数相加

标签:开头   public   int   null   个数   输入   val   数字   ret   

原文地址:https://www.cnblogs.com/LVVLY/p/9010902.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!