链表快慢指针找中点情况分析
情况一:
输入链表头节点,奇数长度返回中点,偶数情况返回上中点
Node slow = head;
Node fast = head;
while (fast.next != null && fast.next.next != null) {
slow = slow.next;
fast = fast.next.next;
}
偶数时:slow为左边的中点,fast为倒数第二个节点
奇数时:slow为中点,fast为最后一个节点
情况二:(LC876)
输入链表头节点,奇数长度返回中点,偶数情况返回下中点
Node slow = head;
Node fast = head;
while (fast != null && fast.next != null) {
slow = slow.next;
fast = fast.next.next;
}
偶数时:slow为右边的中点,fast为null
奇数时:slow为中点,fast为最后一个节点
情况三:
输入链表头节点,奇数长度返回中点前一个,偶数情况返回上中点前一个
情况四:
输入链表头节点,奇数长度返回中点前一个,偶数情况返回上中点