天天看点

链表找中点-快慢指针

  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;
        }