简单题,感觉很有意思,分享一下:
先上代码:
class Solution:
def middleNode(self, head: Optional[ListNode]) -> Optional[ListNode]:
number = 1
res = []
head_low = head
head_quick = head
while head_quick.next:
res.append(head.val)
head_low = head_low.next
for i in range(0,2):
head_quick = head_quick.next
if not head_quick:
return head_low
return head_low
刚开始我的想法是:
先直接一个循环,把链表遍历完,再往回遍历一半,就可以
由于题目中的链表没有定义上下链表可以相互访问,只定义了一个next,所以这个想法就不可行
于是新的想法是:快慢指针,定义一个head_low,和一个head_quick,head_low 往后走一次head_quick就往后走两次,这就实现了返回链表的中间节点
解题代码如上:
虽然简单题,但是感觉这个快慢指针很有意思