1
impl Solution {
2
pub fn reverse_even_length_groups(head: Option<Box<ListNode>>) -> Option<Box<ListNode>> {
3
let mut head = head;
4
let mut data = vec![];
5
let mut ret = None;
6
let mut tail = &mut ret;
7
let mut sz = 1usize;
8

9
while let Some(mut node) = head {
10
head = node.next.take();
11
node.next = None;
12
data.push(node);
13
if data.len() == sz {
14
if sz % 2 == 0 {
15
data.reverse();
16
}
17
for p in data {
18
tail = &mut tail.insert(p).next;
19
}
20
data = vec![];
21
sz += 1;
22
}
23
}
24

25
if data.len() > 0 {
26
if data.len() % 2 == 0 {
27
data.reverse();
28
}
29
for p in data {
30
tail = &mut tail.insert(p).next;
31
}
32
}
33

34
ret
35
}
36
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0