【发布时间】:2020-12-12 17:24:22
【问题描述】:
给我链表节点结构如下:
#[derive(PartialEq, Eq, Clone, Debug)]
pub struct ListNode {
pub val: i32,
pub next: Option<Box<ListNode>>,
}
我需要编写一个方法来平均拆分链表并返回两个部分。我无法用一种方法完成,所以我创建了两个:第一个计算列表的长度,第二个拆分。
fn get_length(head: &Option<Box<ListNode>>) -> usize {
let mut res = 0;
let mut current_node = head;
while current_node.is_some() {
current_node = ¤t_node.as_ref().unwrap().next;
res += 1;
}
res
}
fn split(mut head: Option<Box<ListNode>>, len: usize) -> (Option<Box<ListNode>>, Option<Box<ListNode>>) {
let mut curr = head.take();
for _ in 0..len {
let mut curr_inner = curr.unwrap();
curr = curr_inner.next.take();
}
(head, curr.take())
}
let len = get_length(&node);
let (l1, l2) = split(node, len / 2 + len % 2);
问题出在split() - 我失去了理智。我不知道如何保持它。
有人可以建议吗?
【问题讨论】:
标签: rust linked-list