Leetcode 876. 链表的中间结点 快慢指针
原题链接:Leetcode 876. 链表的中间结点
用两个指针 slow 与 fast 一起遍历链表。slow 一次走一步,fast 一次走两步。那么当 fast 到达链表的末尾时,slow 必然位于中间。
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* middleNode(ListNode* head) {ListNode* fast=head;ListNode* slow=head;while(fast!=nullptr && fast->next!=nullptr ){fast=fast->next->next;slow=slow->next;}return slow;}
};