输入两个链表,找出它们的第一个公共节点。
题解思路
指针 pA 指向 A 链表,指针 pB 指向 B 链表,依次往后遍历
如果 pA 到了末尾,则 pA = headB 继续遍历
如果 pB 到了末尾,则 pB = headA 继续遍历
比较长的链表指针指向较短链表head时,长度差就消除了
如此,只需要将最短链表遍历两次即可找到位置
实现代码
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode pointA = headA;
ListNode pointB = headB;
while(pointA != pointB) {
if(pointA == null){
pointA = headB;
}else {
pointA = pointA.next;
}
if(pointB == null){
pointB = headA;
}else {
pointB = pointB.next;
}
}
return pointA;
}
}