File tree 3 files changed +133
-0
lines changed
solution/1100-1199/1171.Remove Zero Sum Consecutive Nodes from Linked List
3 files changed +133
-0
lines changed Original file line number Diff line number Diff line change @@ -227,6 +227,52 @@ function removeZeroSumSublists(head: ListNode | null): ListNode | null {
227
227
}
228
228
```
229
229
230
+ ### ** Rust**
231
+
232
+ ```
233
+ // Definition for singly-linked list.
234
+ // #[derive(PartialEq, Eq, Clone, Debug)]
235
+ // pub struct ListNode {
236
+ // pub val: i32,
237
+ // pub next: Option<Box<ListNode>>
238
+ // }
239
+ //
240
+ // impl ListNode {
241
+ // #[inline]
242
+ // fn new(val: i32) -> Self {
243
+ // ListNode {
244
+ // next: None,
245
+ // val
246
+ // }
247
+ // }
248
+ // }
249
+ impl Solution {
250
+ pub fn remove_zero_sum_sublists(head: Option<Box<ListNode>>) -> Option<Box<ListNode>> {
251
+ let dummy = Some(Box::new(ListNode { val: 0, next: head }));
252
+ let mut last = std::collections::HashMap::new();
253
+ let mut s = 0;
254
+ let mut p = dummy.as_ref();
255
+ while let Some(node) = p {
256
+ s += node.val;
257
+ last.insert(s, node);
258
+ p = node.next.as_ref();
259
+ }
260
+
261
+ let mut dummy = Some(Box::new(ListNode::new(0)));
262
+ let mut q = dummy.as_mut();
263
+ s = 0;
264
+ while let Some(cur) = q {
265
+ s += cur.val;
266
+ if let Some(node) = last.get(&s) {
267
+ cur.next = node.next.clone();
268
+ }
269
+ q = cur.next.as_mut();
270
+ }
271
+ dummy.unwrap().next
272
+ }
273
+ }
274
+ ```
275
+
230
276
### ** ...**
231
277
232
278
```
Original file line number Diff line number Diff line change @@ -206,6 +206,52 @@ function removeZeroSumSublists(head: ListNode | null): ListNode | null {
206
206
}
207
207
```
208
208
209
+ ### ** Rust**
210
+
211
+ ```
212
+ // Definition for singly-linked list.
213
+ // #[derive(PartialEq, Eq, Clone, Debug)]
214
+ // pub struct ListNode {
215
+ // pub val: i32,
216
+ // pub next: Option<Box<ListNode>>
217
+ // }
218
+ //
219
+ // impl ListNode {
220
+ // #[inline]
221
+ // fn new(val: i32) -> Self {
222
+ // ListNode {
223
+ // next: None,
224
+ // val
225
+ // }
226
+ // }
227
+ // }
228
+ impl Solution {
229
+ pub fn remove_zero_sum_sublists(head: Option<Box<ListNode>>) -> Option<Box<ListNode>> {
230
+ let dummy = Some(Box::new(ListNode { val: 0, next: head }));
231
+ let mut last = std::collections::HashMap::new();
232
+ let mut s = 0;
233
+ let mut p = dummy.as_ref();
234
+ while let Some(node) = p {
235
+ s += node.val;
236
+ last.insert(s, node);
237
+ p = node.next.as_ref();
238
+ }
239
+
240
+ let mut dummy = Some(Box::new(ListNode::new(0)));
241
+ let mut q = dummy.as_mut();
242
+ s = 0;
243
+ while let Some(cur) = q {
244
+ s += cur.val;
245
+ if let Some(node) = last.get(&s) {
246
+ cur.next = node.next.clone();
247
+ }
248
+ q = cur.next.as_mut();
249
+ }
250
+ dummy.unwrap().next
251
+ }
252
+ }
253
+ ```
254
+
209
255
### ** ...**
210
256
211
257
```
Original file line number Diff line number Diff line change
1
+ // Definition for singly-linked list.
2
+ // #[derive(PartialEq, Eq, Clone, Debug)]
3
+ // pub struct ListNode {
4
+ // pub val: i32,
5
+ // pub next: Option<Box<ListNode>>
6
+ // }
7
+ //
8
+ // impl ListNode {
9
+ // #[inline]
10
+ // fn new(val: i32) -> Self {
11
+ // ListNode {
12
+ // next: None,
13
+ // val
14
+ // }
15
+ // }
16
+ // }
17
+ impl Solution {
18
+ pub fn remove_zero_sum_sublists ( head : Option < Box < ListNode > > ) -> Option < Box < ListNode > > {
19
+ let dummy = Some ( Box :: new ( ListNode { val : 0 , next : head } ) ) ;
20
+ let mut last = std:: collections:: HashMap :: new ( ) ;
21
+ let mut s = 0 ;
22
+ let mut p = dummy. as_ref ( ) ;
23
+ while let Some ( node) = p {
24
+ s += node. val ;
25
+ last. insert ( s, node) ;
26
+ p = node. next . as_ref ( ) ;
27
+ }
28
+
29
+ let mut dummy = Some ( Box :: new ( ListNode :: new ( 0 ) ) ) ;
30
+ let mut q = dummy. as_mut ( ) ;
31
+ s = 0 ;
32
+ while let Some ( cur) = q {
33
+ s += cur. val ;
34
+ if let Some ( node) = last. get ( & s) {
35
+ cur. next = node. next . clone ( ) ;
36
+ }
37
+ q = cur. next . as_mut ( ) ;
38
+ }
39
+ dummy. unwrap ( ) . next
40
+ }
41
+ }
You can’t perform that action at this time.
0 commit comments