问题描述: 给定一个头结点为 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
算法思路:快慢指针,设置一个快指针每次走两步,一个慢指针每次走一步,快指针到终点时,慢指针会停在中间结点
# 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: ListNode) -> ListNode:
fast = slow = head
while fast != None and fast.next != None:
fast = fast.next.next
slow = slow.next
return slow



