引言
找出链表的中间位置的节点,如果链表节点为偶数个,返回中间的两个节点中的后一个节点。
例题
算法描述
朴素算法就不赘述了,依然是采用快慢指针的方法。从头出发,当快指针达到末端时,此时慢指针的位置即在中间位置,需要对偶数个节点的链表的情况特殊处理一下。
代码实现
class Solution {
public:
ListNode* middleNode(ListNode* head) {
auto slow_ptr = head;
auto quick_ptr = head;
while (1) {
quick_ptr = quick_ptr->next;
if (quick_ptr == nullptr) {
break;
}
slow_ptr = slow_ptr->next;
quick_ptr = quick_ptr->next;
if (quick_ptr == nullptr) {
break;
}
}
return slow_ptr;
}
};
关键词
链表中间节点 快慢指针