160.相交链表
# 160.相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
输入:intersectVal = 2, listA = [1,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1 输出:Intersected at '2'
- 第一种思路是先分别遍历两个链表求两个的长度,再让长的链表指针减去长度之差,使链表指针对齐,让两个指针同步走直到相碰,返回结果。
- 另一种思路很巧妙,利用表长关系(A单独+A公共)+B单独=(B单独+B公共)+A单独,指针同步走,哪一边指针走到尾部就指向另外一边链表的头进入第二轮,最后返回第二轮相碰节点。
- 条件赋值简便写法:
- p=alen>blen?headA:headB;
- q=alen>blen?headB:headA;
编辑 (opens new window)
上次更新: 2023/12/15, 15:49:57