@@ -116,41 +116,6 @@ class Solution {
116
116
}
117
117
```
118
118
119
- ### ** TypeScript**
120
-
121
- ``` ts
122
- /**
123
- * Definition for singly-linked list.
124
- * class ListNode {
125
- * val: number
126
- * next: ListNode | null
127
- * constructor(val?: number, next?: ListNode | null) {
128
- * this.val = (val===undefined ? 0 : val)
129
- * this.next = (next===undefined ? null : next)
130
- * }
131
- * }
132
- */
133
-
134
- function mergeNodes(head : ListNode | null ): ListNode | null {
135
- let dummy = new ListNode (- 1 );
136
- let p = dummy ;
137
- let sum = 0 ;
138
- head = head .next ;
139
- while (head != null ) {
140
- let cur = head .val ;
141
- if (cur ) {
142
- sum += cur ;
143
- } else {
144
- p .next = new ListNode (sum );
145
- p = p .next ;
146
- sum = 0 ;
147
- }
148
- head = head .next ;
149
- }
150
- return dummy .next ;
151
- }
152
- ```
153
-
154
119
### ** C++**
155
120
156
121
``` cpp
@@ -211,6 +176,107 @@ func mergeNodes(head *ListNode) *ListNode {
211
176
}
212
177
```
213
178
179
+ ### ** TypeScript**
180
+
181
+ ``` ts
182
+ /**
183
+ * Definition for singly-linked list.
184
+ * class ListNode {
185
+ * val: number
186
+ * next: ListNode | null
187
+ * constructor(val?: number, next?: ListNode | null) {
188
+ * this.val = (val===undefined ? 0 : val)
189
+ * this.next = (next===undefined ? null : next)
190
+ * }
191
+ * }
192
+ */
193
+
194
+ function mergeNodes(head : ListNode | null ): ListNode | null {
195
+ const dummy = new ListNode ();
196
+ let cur = dummy ;
197
+ let sum = 0 ;
198
+ while (head ) {
199
+ if (head .val === 0 && sum !== 0 ) {
200
+ cur .next = new ListNode (sum );
201
+ cur = cur .next ;
202
+ sum = 0 ;
203
+ }
204
+ sum += head .val ;
205
+ head = head .next ;
206
+ }
207
+ return dummy .next ;
208
+ }
209
+ ```
210
+
211
+ ### ** Rust**
212
+
213
+ ``` rust
214
+ // Definition for singly-linked list.
215
+ // #[derive(PartialEq, Eq, Clone, Debug)]
216
+ // pub struct ListNode {
217
+ // pub val: i32,
218
+ // pub next: Option<Box<ListNode>>
219
+ // }
220
+ //
221
+ // impl ListNode {
222
+ // #[inline]
223
+ // fn new(val: i32) -> Self {
224
+ // ListNode {
225
+ // next: None,
226
+ // val
227
+ // }
228
+ // }
229
+ // }
230
+ impl Solution {
231
+ pub fn merge_nodes (mut head : Option <Box <ListNode >>) -> Option <Box <ListNode >> {
232
+ let mut dummy = Box :: new (ListNode :: new (- 1 ));
233
+ let mut cur = & mut dummy ;
234
+ let mut sum = 0 ;
235
+ while let Some (node ) = head {
236
+ if node . val == 0 && sum != 0 {
237
+ cur . next = Some (Box :: new (ListNode :: new (sum )));
238
+ cur = cur . as_mut (). next. as_mut (). unwrap ();
239
+ sum = 0 ;
240
+ }
241
+ sum += node . val;
242
+ head = node . next;
243
+ }
244
+ dummy . next. take ()
245
+ }
246
+ }
247
+ ```
248
+
249
+ ### ** C**
250
+
251
+ ``` c
252
+ /* *
253
+ * Definition for singly-linked list.
254
+ * struct ListNode {
255
+ * int val;
256
+ * struct ListNode *next;
257
+ * };
258
+ */
259
+
260
+
261
+ struct ListNode *mergeNodes (struct ListNode * head) {
262
+ struct ListNode dummy;
263
+ struct ListNode * cur = &dummy;
264
+ int sum = 0;
265
+ while (head) {
266
+ if (head->val == 0 && sum != 0) {
267
+ cur->next = malloc(sizeof(struct ListNode));
268
+ cur->next->val = sum;
269
+ cur->next->next = NULL;
270
+ cur = cur->next;
271
+ sum = 0;
272
+ }
273
+ sum += head->val;
274
+ head = head->next;
275
+ }
276
+ return dummy.next;
277
+ }
278
+ ```
279
+
214
280
### **...**
215
281
216
282
```
0 commit comments