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