力扣160.相交链表
- 如果两个链表有交点的话肯定有一段公共的节点链,我们设为c,那么从两个头结点到交点分别为a,b 。那么两个节点到最后走到null分别走了a + c和b + c ,只需要在遍历到最后null去另外一个头结点开始遍历,这样如果没有节点最后走过的路程就都是2*c + a + b ,两个节点相遇之后就走过了 c + a + b,最后q一定是等于p的,如果有交点就返回交点,如果没有就是为空返回
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode p = headA;
ListNode q = headB;
while (q != p) {
p = (p == null ? headB : p.next);
q = (q == null ? headA : q.next);
}
return q;
}
}

浙公网安备 33010602011771号