面试题 02.07. 链表相交
同:160.链表相交
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。
思路
假设链表A长度x+z
链表B长度y+z
那么x+A=y+b
所以遍历一遍之后分别从对方的起始位置遍历即可找到相交节点
代码
js
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} headA
* @param {ListNode} headB
* @return {ListNode}
*/
var getIntersectionNode = function (headA, headB) {
if (headA === null || headB === null) {
return null
}
let pointerA = headA
let pointerB = headB
while (pointerA !== pointerB) {
if (pointerA.next === null && pointerB.next === null) {
return null
}
pointerA = pointerA.next ?? headB
pointerB = pointerB.next ?? headA
}
return pointerA
};