找到中位数的节点

本文最后更新于:2024年5月30日 早上

找到中位数的节点

[1,2,3,4,5]

快慢指针法

1
找出链表中位数节点的方法多种多样,其中较为简单的一种是「快慢指针法」。初始时,快指针 fast 和慢指针 slow 均指向链表的左端点 left。我们将快指针 fast 向右移动两次的同时,将慢指针 slow 向右移动一次,直到快指针到达边界(即快指针到达右端点或快指针的下一个节点是右端点)。此时,慢指针对应的元素就是中位数。

代码实现

1
2
3
4
5
6
7
8
9
10
11
ListNode* getMedian(ListNode* left, ListNode* right) {
ListNode* fast = left;
ListNode* slow = left;
while (fast != right && fast->next != right) {
fast = fast->next;
fast = fast->next;
slow = slow->next;
}
return slow;
}

方法 2

记录链表中节点的个数,然后除 2,再次遍历即可。


找到中位数的节点
http://example.com/算法与数据结构/链表/找中位数/
作者
chen heng cheng
发布于
2022年1月11日
许可协议