leetcode相交链表
双指针法
题目描述: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
图示两个链表在节点 c1 开始相交:
根据两个人他走得路径距离一样来找到他们相遇的位置。
pA走过的路径为A链+B链
pB走过的路径为B链+A链
pA和pB走过的长度都相同,都是A链和B链的长度之和,相当于将两条链从尾端对齐,如果相交,则会提前在相交点相遇,如果没有相交点,则会在最后相遇。
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
if(headA==null || headB==null)return null;
ListNode pA=headA,pB=headB;
while(pA!=pB){
if(pA!=null){
pA=pA.next;
}else{
pA=headB;
}
if(pB!=null){
pB=pB.next;
}else{
pB=headA;
}
}
return pA;
}
}