//双指针//时间复杂度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