
自己1:暴力破解法–哈希表–但是如果链表较大会超出时间限制
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def getIntersectionNode(self, headA, headB):
"""
:type head1, head1: ListNode
:rtype: ListNode
"""
A_idlist = list()
p = headA
while p:
A_idlist.append(str(id(p)))
p = p.next
q = headB
while q:
if id(q) in A_idlist:
return q
return None
大佬1:双指针法

# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def getIntersectionNode(self, headA, headB):
"""
:type head1, head1: ListNode
:rtype: ListNode
"""
if not headA or not headB:
return None
pa = headA
a_flag = False #判断是否已经跳转链表
pb = headB
b_flag = False
while True:
if not pa:
if not a_flag:
pa = headB
a_flag = True
else:
break
if not pb:
if not b_flag:
pb = headA
b_flag = True
if id(pa) == id(pb):
return pa
pa = pa.next
pb = pb.next
return None
链表交点双指针法解析
本文探讨了链表相交问题的两种解决策略:暴力破解法和双指针法。暴力破解法通过哈希表记录节点,但可能因链表过大而超时。双指针法则更高效,两个指针分别从两个链表头开始,遇到链表尾部则转向另一个链表,直至找到相同节点或确定无交点。
328

被折叠的 条评论
为什么被折叠?



