# Solving Leetcode Interviews in Seconds with AI: Middle of the Linked List


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "876" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like [Chatmagic](https://www.chatmagic.app), we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

	# Problem Statement
	> 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:   Input: head = [1,2,3,4,5] Output: [3,4,5] Explanation: The middle node of the list is node 3.  Example 2:   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  

	# Explanation
	Here's an efficient solution to find the middle node of a singly linked list:

*   **Two Pointers:** Utilize two pointers, `slow` and `fast`. The `slow` pointer moves one step at a time, while the `fast` pointer moves two steps at a time.
*   **Reaching the Middle:** When the `fast` pointer reaches the end of the list (or `None`), the `slow` pointer will be pointing to the middle node.
*   **Second Middle Node:** The problem statement requires returning the *second* middle node in case of an even number of nodes. The two-pointer approach naturally leads the slow pointer to the second middle node when the fast pointer reaches the end.

*   **Time and Space Complexity:** O(n) time complexity, O(1) space complexity.

	
	# Code
	```python
	class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def middleNode(head):
    slow = head
    fast = head

    while fast and fast.next:
        slow = slow.next
        fast = fast.next.next

    return slow
	```
			
