1
impl Solution {
2
pub fn partition(mut head: Option<Box<ListNode>>, x: i32) -> Option<Box<ListNode>> {
3
let mut dummy1: Option<Box<ListNode>> = None;
4
let mut dummy2: Option<Box<ListNode>> = None;
5
let mut r1 = &mut dummy1;
6
let mut r2 = &mut dummy2;
7
while head.is_some() {
8
if head.as_ref().unwrap().val < x {
9
if r1.is_some() {
10
r1 = &mut r1.as_mut().unwrap().next;
11
}
12
std::mem::swap(r1, &mut head);
13
std::mem::swap(&mut r1.as_mut().unwrap().next, &mut head);
14
} else {
15
std::mem::swap(r2, &mut head);
16
std::mem::swap(&mut r2.as_mut().unwrap().next, &mut head);
17
r2 = &mut r2.as_mut().unwrap().next;
18
}
19
}
20
if r1.is_some() {
21
r1.as_mut().unwrap().next = dummy2;
22
dummy1
23
} else {
24
dummy2
25
}
26
}
27
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0