Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 51909a9

Browse files
authored
feat: add rust solution to lc problem: No.1171 (#1832)
1 parent bb69b7d commit 51909a9

File tree

3 files changed

+133
-0
lines changed

3 files changed

+133
-0
lines changed

‎solution/1100-1199/1171.Remove Zero Sum Consecutive Nodes from Linked List/README.md‎

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,52 @@ function removeZeroSumSublists(head: ListNode | null): ListNode | null {
227227
}
228228
```
229229

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+
230276
### **...**
231277

232278
```

‎solution/1100-1199/1171.Remove Zero Sum Consecutive Nodes from Linked List/README_EN.md‎

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,52 @@ function removeZeroSumSublists(head: ListNode | null): ListNode | null {
206206
}
207207
```
208208

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+
209255
### **...**
210256

211257
```
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /