leetcode力扣刷题打卡
题目:876. 链表的中间结点
描述:给定一个头结点为 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
解题思路
1、快慢指针;
2、数组,注意只有一个节点的特殊情况;
原代码##
class Solution {
public:
ListNode* middleNode(ListNode* head) {
ListNode *p = head;
int n = 0;
while (head) {
n++;
head = head->next;
}
if (n == 1) return p;
for (int i = 1; i < n / 2; ++i) {
p = p->next;
}
return p->next;
}
};