Problem
Write a program to find the node at which the intersection of two singly linked lists begins.
Example
The following two linked lists:
A: a1 → a2
↘
c1 → c2 → c3
↗
B: b1 → b2 → b3
begin to intersect at node c1.
Note
原理: A.length + Intersection + B.length = B.length + Intersection + A.length,也就是说,走了相同的三段长度之后,正好一起回到Intersection的起点。
Solution
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode l1 = headA, l2 = headB;
while (l1 != l2) {
l1 = l1 == null ? headB: l1.next;
l2 = l2 == null ? headA: l2.next;
}
return l1;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。