//双指针
//时间复杂度O(n) 空间复杂度O(1)
public ListNode middleNode(ListNode head) {
ListNode slow=head,fast = head;
while (fast!=null && fast.next!=null){
slow = slow.next;
fast = fast.next.next;
}
return slow;
}
1->2->3->4->5->null
快指针移动两个结点
慢指针移动一个结点
while循环: 快指针移动两次到5,慢指针仅移动到3 ==>得到中间结点为slow
1->2->3->4->null
while循环: 快指针移动两次到null,慢指针仅移动到3 ==>得到中间结点为slow