给你单链表的头结点 head
,请你找出并返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
示例 1:

1 2 3
| 输入:head = 输出: 解释:链表只有一个中间结点,值为 3 。
|
示例 2:

1 2 3
| 输入:head = 输出: 解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。
|
提示:
- 链表的结点数范围是
[1, 100]
1 <= Node.val <= 100
如果有两个中间结点,则返回第二个中间结点
1 2 3 4 5 6 7 8 9 10 11
| class Solution { public ListNode middleNode(ListNode head) { ListNode slow = head; ListNode fast = head; while(fast != null && fast.next != null){ slow = slow.next; fast = fast.next.next; } return slow; } }
|
如果有两个中间结点,则返回第一个中间结点
1 2 3 4 5 6 7 8 9 10 11 12
| class Solution { public ListNode middleNode(ListNode head) { ListNode slow = head; ListNode fast = head.next; while(fast != null && fast.next != null){ slow = slow.next; fast = fast.next.next;
} return slow; } }
|