Skip to content

Commit 8dc08a9

Browse files
Create 2.AddTwoNumbers.cpp
1 parent fe145a6 commit 8dc08a9

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

2.AddTwoNumbers.cpp

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
///
2+
/// LeetCode
3+
/// By Reza Ebrahimi <reza.ebrahimi.dev@gmail.com>
4+
///
5+
/// 2. Add Two Numbers
6+
/// https://leetcode.com/problems/add-two-numbers
7+
///
8+
/// Time Submitted | Status | Runtime | Memory | Language
9+
/// 2020/03/11 | Accepted | 20 ms | 11.1 MB| cpp
10+
///
11+
/// Runtime: 20 ms, faster than 98.04% of C++ online submissions for Add Two Numbers.
12+
/// Memory Usage: 11.1 MB, less than 5.14% of C++ online submissions for Add Two Numbers.
13+
///
14+
15+
16+
17+
/*
18+
Definition for singly-linked list.
19+
struct ListNode {
20+
int val;
21+
ListNode *next;
22+
ListNode(int x) : val(x), next(NULL) {}
23+
};
24+
*/
25+
26+
#include <iostream>
27+
28+
class Solution {
29+
public:
30+
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
31+
ListNode *main_node = new ListNode(0);
32+
ListNode *node = main_node;
33+
int carry = 0;
34+
35+
while (l1 != nullptr || l2 != nullptr) {
36+
int val1 = l1 != nullptr ? l1->val : 0;
37+
int val2 = l2 != nullptr ? l2->val : 0;
38+
39+
int sum = val1 + val2 + carry;
40+
carry = sum / 10;
41+
42+
node->next = new ListNode(sum % 10);
43+
node = node->next;
44+
45+
l1 = l1 != nullptr ? l1->next : nullptr;
46+
l2 = l2 != nullptr ? l2->next : nullptr;
47+
}
48+
node->next = carry ? new ListNode(carry) : nullptr;
49+
return main_node->next;
50+
}
51+
};

0 commit comments

Comments
 (0)