- 题目描述:返回一个链表的中间位置,若中间位置有两个,则返回更后的那个
- 思路:用快慢指针,慢指针一次移动一步,快指针一次移动两步,当快指针移动到链尾或者为null时,返回慢指针即可
- 注:按题目意思应该要按链表元素个数的奇偶数来分,当是奇数时,直接返回慢指针,当为偶数时,应该返回慢指针的下一个元素,但我这代码不管奇偶都直接返回慢指针,竟然也过了,玄学啊!
/**
Definition for singly-linked list.
struct ListNode {
int val;
struct ListNode *next;
};
**/
struct ListNode* middleNode(struct ListNode* head) {
struct ListNode *fast=head;
struct ListNode *slow=head;
while(fast&&fast->next){
fast=fast->next->next;
slow=slow->next;
}
return slow;
}