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
6766class 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 */
9595class 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 */
124126class Solution {
125127public:
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 */
188190public 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