題目敘述
找出 linked list 的中間節點。
經典的快慢指標題:快指標每次走兩步,慢指標每次走一步,快指標到達終點時,慢指標剛好在中間。這題找到中間節點後不需要前面的資料,所以直接用 head 當作慢指標。
解題流程
class Solution {
public:
ListNode* middleNode(ListNode* head) {
ListNode *fast = head;
while (fast && fast->next) {
fast = fast->next->next;
head = head->next;
}
return head;
}
};