例题
描述
给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。
数据范围: n\le10000n≤10000,1<=结点值<=100001<=结点值<=10000
要求:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)
例如,输入{1,2},{3,4,5}时,对应的环形链表如下图所示:
解决方案
def EntryNodeOfLoop(self, pHead):
# write code here
lst = set()
p1 = pHead
while p1:
if p1 in lst:
print(p1.val)
# return p1
break
lst.add(p1)
p1 = p1.next
return p1
总结
使用集合完美解决,不知道这算不算暴力递归?毕竟链表太长的时候一个一个来有点多,或者用快慢指针来解决,但是总感觉代码太多,不优雅