【题目】
【代码】
【Python】
【方法1:set】

class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
s=set()
while headA:
s.add(headA)
headA=headA.next
while headB:
if headB in s:
return headB
headB=headB.next
return None
【方法2:dict】

class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
dic=dict()
while headA:
dic[headA]=dic.setdefault(headA,0)+1
headA=headA.next
while headB:
if dic.setdefault(headB,0):
return headB
headB=headB.next
return None
【方法3】

class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
L_A,L_B=0,0
t=headA
while t:
L_A+=1
t=t.next
t=headB
while t:
L_B+=1
t=t.next
diff=abs(L_A-L_B)
if L_A<L_B:
t=headA
headA=headB
headB=t
while diff:
diff-=1
headA=headA.next
while headA:
if headA==headB:
return headA
headA=headA.next
headB=headB.next
return None
【方法4:两条通路】

class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
ha,hb=headA,headB
while ha!=hb:
ha=headB if ha is None else ha.next
hb=headA if hb is None else hb.next
return hb
本文介绍了如何使用Python实现寻找两个链表交点的三种高效算法,包括set数据结构、字典计数和双指针技巧。通过实例演示了如何利用这些方法简化链表操作,提高代码效率。
1572

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



