
快指针每次走两步,慢的每次走一步,当快指针为nullptr或者下一个节点为nullptr时,就返回慢的:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* middleNode(ListNode* head) {
ListNode *faster = head;
ListNode *lower = head;
while(faster!=nullptr&&faster->next!=nullptr){
faster = faster->next->next;
lower = lower->next;
}
return lower;
}
};
本文介绍了一种使用快慢指针技巧找到链表中间节点的高效算法。快指针每次移动两步,慢指针每次移动一步,当快指针到达链表尾部时,慢指针将位于链表的中点。
1292

被折叠的 条评论
为什么被折叠?



