- 題目描述:返回一個鏈表的中間位置,若中間位置有兩個,則返回更後的那個
- 思路:用快慢指針,慢指針一次移動一步,快指針一次移動兩步,當快指針移動到鏈尾或者爲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;
}