原题链接:#160_找出两个链表的交点
- 解题思路:
- 设A链表长a+c,B链表长b+c,可知a+c+b = b+c+a,即,两者走完自己的全程加上对方特有的一段,总路程相同,若不相同,则无交点
- 使用双指针可解
public ListNode f(ListNode headA, ListNode headB) {
if (headA == null || headB == null) return null;
ListNode h1 = headA;
ListNode h2 = headB;
while (h1 != h2) {
h1 = (h1 == null) ? headB : h1.next; //走完自己的一段,开始走对方一段
h2 = (h2 == null) ? headA : h2.next;
}
return h1;
}
- 复杂度分析
- 时间复杂度:O(m+n)
- 空间复杂度:O(1)