链接:
https://leetcode-cn.com/problems/linked-list-cycle/
方法一:把所有的节点放到set,不用列表因为列表添加元素比较慢。
class Solution:
def hasCycle(self, head: ListNode) -> bool:
set1=set()
while head:
if head not in set1:
set1.add(head)
else:
return True
head = head.next
return False
方法二:快慢指针
class Solution:
def hasCycle(self, head: ListNode) -> bool:
if not head or not head.next:
return False
slow = head
fast = head.next
while slow != fast:
if fast is None or fast.next is None:
return False
slow = slow.next
fast = fast.next.next
return True
https://leetcode-cn.com/problems/intersection-of-two-linked-lists/
方法一:字典存放
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
set1 = set()
while headA:
if headA not in set1:
set1.add(headA)
else:
break
headA = headA.next
while headB:
if headB in set1:
return headB
headB = headB.next
return None