60
60
``` python
61
61
# Definition for singly-linked list.
62
62
# 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
67
66
class Solution :
68
67
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
72
70
while l1 or l2 or carry:
73
71
s = (0 if not l1 else l1.val) + (0 if not l2 else l2.val) + carry
74
72
carry, val = divmod (s, 10 )
@@ -89,13 +87,15 @@ class Solution:
89
87
* public class ListNode {
90
88
* int val;
91
89
* 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; }
93
93
* }
94
94
*/
95
95
class Solution {
96
96
public ListNode addTwoNumbers (ListNode l1 , ListNode l2 ) {
97
+ ListNode dummy = new ListNode (0 );
97
98
int carry = 0 ;
98
- ListNode dummy = new ListNode (- 1 );
99
99
ListNode cur = dummy;
100
100
while (l1 != null || l2 != null || carry != 0 ) {
101
101
int s = (l1 == null ? 0 : l1. val) + (l2 == null ? 0 : l2. val) + carry;
@@ -118,22 +118,24 @@ class Solution {
118
118
* struct ListNode {
119
119
* int val;
120
120
* 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) {}
122
124
* };
123
125
*/
124
126
class Solution {
125
127
public:
126
128
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
129
+ ListNode* dummy = new ListNode();
127
130
int carry = 0;
128
- ListNode* dummy = new ListNode(-1);
129
131
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;
132
134
carry = s / 10;
133
135
cur->next = new ListNode(s % 10);
134
136
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 ;
137
139
}
138
140
return dummy->next;
139
141
}
@@ -145,29 +147,29 @@ public:
145
147
```js
146
148
/**
147
149
* 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)
151
153
* }
152
154
*/
153
155
/**
154
156
* @param {ListNode} l1
155
157
* @param {ListNode} l2
156
158
* @return {ListNode}
157
159
*/
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;
171
173
};
172
174
```
173
175
@@ -187,14 +189,13 @@ var addTwoNumbers = function (l1, l2) {
187
189
*/
188
190
public class Solution {
189
191
public ListNode AddTwoNumbers (ListNode l1 , ListNode l2 ) {
190
- ListNode dummy = new ListNode (- 1 );
192
+ ListNode dummy = new ListNode ();
193
+ int carry = 0 ;
191
194
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 );
198
199
cur = cur .next ;
199
200
l1 = l1 == null ? null : l1 .next ;
200
201
l2 = l2 == null ? null : l2 .next ;
@@ -204,6 +205,72 @@ public class Solution {
204
205
}
205
206
```
206
207
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
+
207
274
### ** ...**
208
275
209
276
```
0 commit comments