题目
160. 相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表
不存在相交节点,返回 null 。
题目数据 保证 整个链式结构中不存在环。
注意,函数返回结果后,链表必须保持其原始结构 。
题解
如果两个链表存在交接,同步遍历链表,当指针指向空时,在将指针指到另一链表起始节点,两表指针相遇处必
为初始交接处
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
if headA is None or headB is None:
return None
tmp_a, tmp_b = headA, headB
return_flag = 0
while tmp_a != tmp_b:
tmp_a, tmp_b = tmp_a.next, tmp_b.next
if tmp_a is None:
tmp_a, return_flag = headB, return_flag+1
if tmp_b is None:
tmp_b, return_flag = headA, return_flag+1
if return_flag > 2:
# a, b指针只能返回另一链表头部一次
return None
return tmp_a
给定两个单链表的头节点,找到它们相交的起始节点。若无相交节点,返回null。在遍历过程中,当指针为空时,将其指向另一个链表的头节点,直至两个指针相遇,即为相交起点。
1653

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



