class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
lenA, lenB = 0, 0
cur = headA
while cur: # 求链表A的长度
cur = cur.next
lenA += 1
cur = headB
while cur: # 求链表B的长度
cur = cur.next
lenB += 1
curA, curB = headA, headB
if lenA > lenB: # 让curB为最长链表的头,lenB为其长度
curA, curB = curB, curA
lenA, lenB = lenB, lenA
for _ in range(lenB - lenA): # 让curA和curB在同一起点上(末尾位置对齐)
curB = curB.next
while curA: # 遍历curA 和 curB,遇到相同则直接返回
if curA == curB:
return curA
else:
curA = curA.next
curB = curB.next
return None
链表相交代码详解
最新推荐文章于 2024-09-13 19:36:07 发布
该代码实现了一个方法,用于找到两个链表的交点。首先计算两个链表的长度,然后使较短的链表指针移动到与较长链表相同的结束位置,最后同时遍历两个链表直到找到相等的节点,即为交点。
摘要由CSDN通过智能技术生成