题目链接:https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/
![](https://img.haomeiwen.com/i4658633/b282b30d4d1c9d87.png)
题目解析:
本题目采用双指针的方式,当A B
指针不相等的时候,依次遍历,如果A B
指针任意为null
,就赋值A=B
(如果A
为null
)或者B=A
(如果B
为null
)
原理: A
的长度为a
,B
的长度为b
, 相交点距离最末尾的距离为c
。那么A
从头走到尾,在从B
的头走到相交点,那么距离就是a+(b-c)
;B
从头走到尾,在从A
的头走到相交点,那么距离是b+(a-c)
,满足加法交换律,所以找到相交点。
图文分析可见:https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/solution/jian-zhi-offer-52-liang-ge-lian-biao-de-gcruu/
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode A = headA,B = headB;
while (A != B){
A = A == null ? headB : A.next;
B = B == null ? headA : B.next;
}
return headA;
}
复杂度分析
空间复杂度: O(1)。
时间复杂度: O(M+N)。
网友评论