链表找中点常用的手段就是使用快慢指针,对于需要不同中点指向的情况,有不同的代码写法:

  1. 偶数个节点,slow指向中点右侧,奇数个节点,slow指向中间节点的下一个节点。即总是指向右侧的头节点
  2. 偶数个节点,slow指向中点左侧,奇数个节点,slow指向中间节点,可以方便断链。即总是指向左节点的尾节点
        //偶数个节点,slow指向中点右侧,奇数个节点,slow指向中间节点的下一个节点
//ListNode* fast = head;
//ListNode* slow = head;
//while(fast){
//fast = fast->next;
//slow = slow->next;
//if(fast == nullptr) break;
//fast = fast->next;
//}
//偶数个节点,slow指向中点左侧,奇数个节点,slow指向中间节点,可以方便断链
ListNode* fast = head->next;
ListNode* slow = head;
while(fast != nullptr && fast->next != nullptr){
slow = slow->next;
fast = fast->next->next;
}