当前位置: 首页 > 后端技术 > Python

LeetCode链表的中间节点

时间:2023-03-26 14:52:41 Python

链表的中间节点题目来源:https://leetcode-cn.com/problems/middle-of-the-linked-list题目给定一个非空单链list,返回链表的中间节点。如果有两个中间节点,则返回第二个中间节点。示例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之间。解题思路:双指针定义了两个指针,一个快指针,一个慢指针。两个指针最初都指向链表的第一个节点。两个指针同时移动,但快指针向前移动2步,慢指针移动1步。在快指针移??动结束时,慢指针可以到达链表的中间。具体过程如下:代码实现#单向链表的定义。#classListNode:#def__init__(self,x):#self.val=x#self.next=Noneclass解决方案:defmiddleNode(self,head:ListNode)->ListNode:ifheadisNone:returnNone#定义fast和slow指针,并同时指向头结点next:slow=slow.nextfast=fast.next.nextreturnslow实现结果以上是使用双指针(快指针和慢指针)的方法。解决问题的主要内容《链表的中间节点》欢迎关注微信公众号《书所集录》