题目描述
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def EntryNodeOfLoop(self, pHead):
# write code here
temp = []
p = pHead
while p:
if p not in temp:
temp.append(p)
else:
return p
p = p.next
思路二:
快慢指针
这份解法是搬运,图片也是原回答评论区网友贡献,非本人原创:https://leetcode.com/problems/linked-list-cycle-ii/discuss/44774/Java-O(1)-space-solution-with-detailed-explanation.
请大家支持原回答,如果可以去点赞或者感谢的请去原回答表示谢意。
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def EntryNodeOfLoop(self, pHead):
# write code here
if pHead == None or pHead.next== None or pHead.next.next==None:
return None
slow = pHead.next
fast = pHead.next.next
while slow!=fast:
if fast.next==None or fast.next.next==None:
return None
slow = slow.next
fast = fast.next.next
slow = pHead
while slow!=fast:
slow = slow.next
fast = fast.next
return slow