2.addTwoNumbers

code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
struct ListNode {
int val;
ListNode *next;
ListNode() : val(0), next(nullptr) {}
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *next) : val(x), next(next) {}
};

class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* head = new ListNode(-1,nullptr);
ListNode* temp = head; //创建dummyNode 简化边界条件计算
int sum = 0;
while (l1 || l2) {
int a = l1 == nullptr?0:l1->val; //如果l1为nullptr 表示l1遍历完了 赋值为0
int b = l2 == nullptr?0:l2->val; //l2同理
sum += a + b;
temp->next = new ListNode(sum % 10);
sum /= 10;
temp = temp->next;
if (l1) l1 = l1->next;
if (l2) l2 = l2->next;
}
if (sum > 0) temp->next = new ListNode(1);
return head->next;
}
};

/*
review 2024.6.11
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
int carry = 0;
ListNode* ans = new ListNode();
ListNode* temp = ans;
while (l1 != nullptr || l2 != nullptr) {
int x,y,z;
if (!l1) {
x = 0;
}else {
x = l1->val;
l1 = l1->next;
}
if (!l2) {
y = 0;
}else {
y = l2->val;
l2 = l2->next;
}
temp->next = new ListNode();
temp = temp->next;
z = carry + x + y;
if (z > 9) {
carry = 1;
temp->val = z % 10;
}else {
temp->val = z;
carry = 0;
}
}
if (carry == 1) {
temp->next = new ListNode();
temp->next->val = 1;
}
return ans->next;
}
};

2.addTwoNumbers
https://williammarioalan.github.io/2025/01/29/2-addTwoNumbers/
Author
mario
Posted on
January 29, 2025
Licensed under