diff options
Diffstat (limited to 'other/odd_even_linke_list.rs')
-rw-r--r-- | other/odd_even_linke_list.rs | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/other/odd_even_linke_list.rs b/other/odd_even_linke_list.rs deleted file mode 100644 index 89e96c1..0000000 --- a/other/odd_even_linke_list.rs +++ /dev/null @@ -1,38 +0,0 @@ -#[derive(PartialEq, Eq, Clone, Debug)] -pub struct ListNode { - pub val: i32, - pub next: Option<Box<ListNode>> -} - -impl ListNode { - #[inline] - fn new(val: i32) -> Self { - ListNode { - next: None, - val - } - } -} - -impl Solution { - pub fn odd_even_list(mut head: Option<Box<ListNode>>) -> Option<Box<ListNode>> { - let mut odd_dummy_head = ListNode::new(-1); - let mut even_dummy_head = ListNode::new(-1); - let mut odd_curr = &mut odd_dummy_head; - let mut even_curr = &mut even_dummy_head; - let mut is_even = false; - while let Some(mut node) = head { - head = std::mem::replace(&mut node.next, None); - if is_even { - even_curr.next = Some(node); - even_curr = even_curr.next.as_mut().unwrap(); - } else { - odd_curr.next = Some(node); - odd_curr = odd_curr.next.as_mut().unwrap(); - } - is_even = !is_even; - } - odd_curr.next = even_dummy_head.next; - odd_dummy_head.next - } -} |