题目:LeetCode 876
解法一:快慢指针
注意:while
循环条件,以链表(1,2,3,4,null)
为例:
- 当条件为
fast != null && fast.next != null
时,若链表元素为偶数个,则返回中间的后一个节点(3)
- 当条件为
fast.next != null && fast.next.next != null
时,若链表元素为偶数个,则返回中间的前一个节点(2)
若链表元素为奇数个,则都返回中间节点
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;}