思路
- 使用双指针
- 对于相交链表问题,首先判断两个链表是否为空
- 让pA pB 分别指向两个链表的头节点
- while(两个指针没有重合的时候)
- 判断 指针是否是到了尾部:
指到了null :让指针指向另一个链表的头节点
没到 : 指向下一个节点 - 二刷:注意格式:首先判断headA 和 headB的非空情况,在while内部当为null的时候,pA指向的的是headB,而不是pB
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){
//注意:指向的是 headB 或者 headA 而非 pA或者pB
pA = pA == null ? headB : pA.next;
pB = pB == null ? headA : pB.next;
}
return pA;
}
}