我的Bilibili频道:香芋派Taro

我的个人博客:taropie0224.github.io(阅读体验更佳)
我的公众号:香芋派的烘焙坊
我的音频技术交流群:1136403177
我的个人微信:JazzyTaroPie

https://leetcode.cn/problems/middle-of-the-linked-list/

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution
{
public:
ListNode *middleNode(ListNode *head)
{
ListNode *slow = head;
ListNode *fast = head;
while (fast != NULL && fast->next != NULL)
{
slow = slow->next;
fast = fast->next->next;
}
return slow;
}
};

思路

快慢指针,快指针一次移动两个位置,慢指针一次移动一个位置,当fast指针到末尾时,slow指针就指向中间节点

有一个坑点就是循环条件也需要判断fast自身是不是空指针,防止头节点就是空指针

所以我们必须记住在调用next方法之前总要判断其是否为空