Skip to content

Commit 40b628a

Browse files
committed
feat: update solutions to lc problem: No.0002. Add Two Numbers
1 parent f87c8d9 commit 40b628a

File tree

9 files changed

+281
-180
lines changed

9 files changed

+281
-180
lines changed

solution/0000-0099/0002.Add Two Numbers/README.md

+105-38
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,13 @@
6060
```python
6161
# Definition for singly-linked list.
6262
# class ListNode:
63-
# def __init__(self, x):
64-
# self.val = x
65-
# self.next = None
66-
63+
# def __init__(self, val=0, next=None):
64+
# self.val = val
65+
# self.next = next
6766
class Solution:
6867
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
69-
carry = 0
70-
dummy = ListNode(-1)
71-
cur = dummy
68+
dummy = ListNode()
69+
carry, cur = 0, dummy
7270
while l1 or l2 or carry:
7371
s = (0 if not l1 else l1.val) + (0 if not l2 else l2.val) + carry
7472
carry, val = divmod(s, 10)
@@ -89,13 +87,15 @@ class Solution:
8987
* public class ListNode {
9088
* int val;
9189
* ListNode next;
92-
* ListNode(int x) { val = x; }
90+
* ListNode() {}
91+
* ListNode(int val) { this.val = val; }
92+
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
9393
* }
9494
*/
9595
class Solution {
9696
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
97+
ListNode dummy = new ListNode(0);
9798
int carry = 0;
98-
ListNode dummy = new ListNode(-1);
9999
ListNode cur = dummy;
100100
while (l1 != null || l2 != null || carry != 0) {
101101
int s = (l1 == null ? 0 : l1.val) + (l2 == null ? 0 : l2.val) + carry;
@@ -118,22 +118,24 @@ class Solution {
118118
* struct ListNode {
119119
* int val;
120120
* ListNode *next;
121-
* ListNode(int x) : val(x), next(NULL) {}
121+
* ListNode() : val(0), next(nullptr) {}
122+
* ListNode(int x) : val(x), next(nullptr) {}
123+
* ListNode(int x, ListNode *next) : val(x), next(next) {}
122124
* };
123125
*/
124126
class Solution {
125127
public:
126128
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
129+
ListNode* dummy = new ListNode();
127130
int carry = 0;
128-
ListNode* dummy = new ListNode(-1);
129131
ListNode* cur = dummy;
130-
while (l1 != NULL || l2 != NULL || carry != 0) {
131-
int s = (l1 == NULL ? 0 : l1-> val) + (l2 == NULL ? 0 : l2->val) + carry;
132+
while (l1 || l2 || carry) {
133+
int s = (l1 ? l1->val : 0) + (l2 ? l2->val : 0) + carry;
132134
carry = s / 10;
133135
cur->next = new ListNode(s % 10);
134136
cur = cur->next;
135-
l1 = l1 == NULL ? NULL : l1->next;
136-
l2 = l2 == NULL ? NULL : l2->next;
137+
l1 = l1 ? l1->next : nullptr;
138+
l2 = l2 ? l2->next : nullptr;
137139
}
138140
return dummy->next;
139141
}
@@ -145,29 +147,29 @@ public:
145147
```js
146148
/**
147149
* Definition for singly-linked list.
148-
* function ListNode(val) {
149-
* this.val = val;
150-
* this.next = null;
150+
* function ListNode(val, next) {
151+
* this.val = (val===undefined ? 0 : val)
152+
* this.next = (next===undefined ? null : next)
151153
* }
152154
*/
153155
/**
154156
* @param {ListNode} l1
155157
* @param {ListNode} l2
156158
* @return {ListNode}
157159
*/
158-
var addTwoNumbers = function (l1, l2) {
159-
let carry = 0;
160-
const dummy = new ListNode(-1);
161-
let cur = dummy;
162-
while (l1 || l2 || carry) {
163-
const s = (l1 ? l1.val : 0) + (l2 ? l2.val : 0) + carry;
164-
carry = Math.floor(s / 10);
165-
cur.next = new ListNode(s % 10);
166-
cur = cur.next;
167-
l1 = l1 ? l1.next : l1;
168-
l2 = l2 ? l2.next : l2;
169-
}
170-
return dummy.next;
160+
var addTwoNumbers = function(l1, l2) {
161+
const dummy = new ListNode();
162+
let carry = 0;
163+
let cur = dummy;
164+
while (l1 || l2 || carry) {
165+
const s = (l1?.val || 0) + (l2?.val || 0) + carry;
166+
carry = Math.floor(s / 10);
167+
cur.next = new ListNode(s % 10);
168+
cur = cur.next;
169+
l1 = l1?.next;
170+
l2 = l2?.next;
171+
}
172+
return dummy.next;
171173
};
172174
```
173175

@@ -187,14 +189,13 @@ var addTwoNumbers = function (l1, l2) {
187189
*/
188190
public class Solution {
189191
public ListNode AddTwoNumbers(ListNode l1, ListNode l2) {
190-
ListNode dummy = new ListNode(-1);
192+
ListNode dummy = new ListNode();
193+
int carry = 0;
191194
ListNode cur = dummy;
192-
var carry = 0;
193-
while (l1 != null || l2 != null || carry != 0)
194-
{
195-
int t = (l1 == null ? 0 : l1.val) + (l2 == null ? 0 : l2.val) + carry;
196-
carry = t / 10;
197-
cur.next = new ListNode(t % 10);
195+
while (l1 != null || l2 != null || carry != 0) {
196+
int s = (l1 == null ? 0 : l1.val) + (l2 == null ? 0 : l2.val) + carry;
197+
carry = s / 10;
198+
cur.next = new ListNode(s % 10);
198199
cur = cur.next;
199200
l1 = l1 == null ? null : l1.next;
200201
l2 = l2 == null ? null : l2.next;
@@ -204,6 +205,72 @@ public class Solution {
204205
}
205206
```
206207

208+
### **Go**
209+
210+
```go
211+
/**
212+
* Definition for singly-linked list.
213+
* type ListNode struct {
214+
* Val int
215+
* Next *ListNode
216+
* }
217+
*/
218+
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
219+
dummy := &ListNode{}
220+
carry := 0
221+
cur := dummy
222+
for l1 != nil || l2 != nil || carry != 0 {
223+
s := carry
224+
if l1 != nil {
225+
s += l1.Val
226+
}
227+
if l2 != nil {
228+
s += l2.Val
229+
}
230+
carry = s / 10
231+
cur.Next = &ListNode{s % 10, nil}
232+
cur = cur.Next
233+
if l1 != nil {
234+
l1 = l1.Next
235+
}
236+
if l2 != nil {
237+
l2 = l2.Next
238+
}
239+
}
240+
return dummy.Next
241+
}
242+
```
243+
244+
### **Ruby**
245+
246+
```rb
247+
# Definition for singly-linked list.
248+
# class ListNode
249+
# attr_accessor :val, :next
250+
# def initialize(val = 0, _next = nil)
251+
# @val = val
252+
# @next = _next
253+
# end
254+
# end
255+
# @param {ListNode} l1
256+
# @param {ListNode} l2
257+
# @return {ListNode}
258+
def add_two_numbers(l1, l2)
259+
dummy = ListNode.new()
260+
carry = 0
261+
cur = dummy
262+
while !l1.nil? || !l2.nil? || carry > 0
263+
s = (l1.nil? ? 0 : l1.val) + (l2.nil? ? 0 : l2.val) + carry
264+
carry = s / 10
265+
cur.next = ListNode.new(s % 10)
266+
cur = cur.next
267+
l1 = l1.nil? ? l1 : l1.next
268+
l2 = l2.nil? ? l2 : l2.next
269+
end
270+
dummy.next
271+
end
272+
```
273+
207274
### **...**
208275

209276
```

0 commit comments

Comments
 (0)