哈希表法很简单,略过
主要理解双指针法。此法难点在于如何使用两个指针全都遍历两个数组。因为若存在相交的链表,则会在遍历过程中,两个链表同时访问到此节点。
而解决这个难点可以通过三元运算符,若指针已经遍历完原数组则为空,则再开始遍历另一个数组。
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
//双指针法
if(headA == null || headB ==null){
return null;
}
ListNode pA = headA;
ListNode pB = headB;
while(pA != pB){
pA = pA == null ? headB : pA.next;
pB = pB == null ? headA : pB.next;
}
return pA;
}
}