给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
需求
- 返回相交起始点
- 不存在返回null
实现
- 双指针
代码
/**
* 查找两个单链表的交点节点
* @param headA 第一个链表头节点
* @param headB 第二个链表头节点
* @return 相交的起始节点,若无交点返回 null
*/
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
if (headA == null || headB == null) {
return null;
}
ListNode a = headA;
ListNode b = headB;
// 使用双指针法遍历两个链表,当指针相等时找到交点
while (a != b) {
a = a == null ? headB : a.next;
b = b == null ? headA : b.next;
}
return a;
}
}
