LeetCode0876.链表的中间部分[简单][Python][双指针]链表。如果有两个中间节点,则返回第二个中间节点。示例1:输入:[1,2,3,4,5]输出:节点3fromthislist(Serialization:[3,4,5])返回的节点值为3。(法官对该节点的序列化为[3,4,5])。请注意,我们返回了一个ListNode对象ans,这样:ans。val=3,ans.next.val=4,ans.next.next.val=5,ans.next.next.next=NULL。示例2:输入:[1,2,3,4,5,6]输出:这个列表中的节点4(序列化:[4,5,6])因为列表有两个中间节点,值为3和4,我们返回第二个。注意:给定链表的节点数会在1到100之间。题目给定一个非空单向链表,头节点为head,返回链表的中间节点。如果有两个中间节点,则返回第二个中间节点。示例1:输入:[1,2,3,4,5]输出:此列表中的节点3(序列化形式:[3,4,5])返回节点值3。(节点在评价系统中的序列化表示为[3,4,5])。请注意,我们返回一个ListNode类型的对象ans,这样:ans.val=3、ans.next.val=4、ans.next.next.val=5和ans.next.next.next=NULL。示例2:输入:[1,2,3,4,5,6]输出:此列表中的节点4(序列化形式:[4,5,6])由于此列表有两个中间节点,值为3和4我们分别返回第二个节点。提示:给定链表的节点数在1到100之间。思考快慢指针快指针一次移动两个位置,慢指针一次移动一个位置。当快指针到达链表的末尾时,慢指针正好在中间。时间复杂度:O(n),其中n是链表的长度。空间复杂度:O(1)Python3code#Definitionforsingle-linkedlist.#classListNode:#def__init__(self,x):#self.val=x#self.next=Noneclass解决方案:defmiddleNode(self,head:ListNode)->ListNode:ifnothead:returnNone#快慢指针slow,fast=head,headwhilefastandfast.next:slow=slow.nextfast=fast.next.nextreturnslowGitHublinkPython
