876.Middle of the Linked List === ###### tags: `Easy`,`Linked List`,`Two Pointers` [876. Middle of the Linked List](https://leetcode.com/problems/middle-of-the-linked-list/) ### 題目描述 Given the `head` of a singly linked list, return *the middle node of the linked list*. If there are two middle nodes, return **the second middle** node. ### 範例 **Example 1:** ![](https://assets.leetcode.com/uploads/2021/07/23/lc-midlist1.jpg) ``` Input: head = [1,2,3,4,5] Output: [3,4,5] Explanation: The middle node of the list is node 3. ``` **Example 2:** ![](https://assets.leetcode.com/uploads/2021/07/23/lc-midlist2.jpg) ``` Input: head = [1,2,3,4,5,6] Output: [4,5,6] Explanation: Since the list has two middle nodes with values 3 and 4, we return the second one. ``` **Constraints**: * The number of nodes in the list is in the range `[1, 100]`. * `1 <= Node.val <= 100` ### 解答 #### Python ```python= # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def middleNode(self, head: Optional[ListNode]) -> Optional[ListNode]: slow = fast = head while fast and fast.next: slow, fast = slow.next, fast.next.next return slow ``` > [name=Kobe][time= Dec 5, 2022] #### Javascript ```javascript= function middleNode(head) { let slow = head; let fast = head; while (fast && fast.next) { slow = slow.next; fast = fast.next.next; } return slow; } ``` > [name=Marsgoat][time= Dec 5, 2022] #### C# ```csharp= public class Solution { public ListNode MiddleNode(ListNode head) { var slow = head; var fast = head; while (fast.next != null) { slow = slow.next; fast = fast.next; if (fast.next == null) break; fast = fast = fast.next; } return slow; } } ``` > [name=Jim][time= Dec 5, 2022] ### Reference [回到題目列表](https://hackmd.io/@Marsgoat/leetcode_every_day)