Skip to content

Commit 24f7260

Browse files
authored
Create 2_Add Two Numbers
1 parent 4000157 commit 24f7260

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

Diff for: 2_Add Two Numbers

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
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+
13+
ListNode *result = new ListNode(0); //return listNode
14+
ListNode *p = l1, *q = l2, *r = result; //linkedList pointer
15+
int carry = 0; //計算有沒有進位,有進位要新增一個node
16+
int sum = 0;
17+
18+
while(p != NULL && q != NULL){
19+
20+
// l1==l2
21+
sum = p->val + q->val + carry;
22+
carry = sum / 10;
23+
r->next = new ListNode(sum % 10);
24+
p = p->next; //移動指標
25+
q = q->next;
26+
r = r->next;
27+
}
28+
29+
while(p != NULL || q != NULL || carry){
30+
31+
// l1 !=l2 或者是l1=l2但會進位,例如[5][5]
32+
sum = carry;
33+
34+
if(p != NULL){
35+
36+
// l1 較多
37+
sum = sum + p->val;
38+
p = p->next;
39+
}
40+
if(q != NULL){
41+
42+
// l2 較多
43+
sum = sum + q->val;
44+
q = q->next;
45+
}
46+
47+
carry = sum / 10;
48+
// 會進到while loop,一定需要新增node,所以可以最後做
49+
r->next = new ListNode(sum % 10);
50+
// 記得移動指標
51+
r = r -> next;
52+
}
53+
return result->next;
54+
}
55+
};

0 commit comments

Comments
 (0)