只要你够浪漫,算法题里也有爱情【刷了道题看了评论我惊了!!!】
题目:
编写一个程序,找到两个单链表相交的起始节点。
注意:
如果两个链表没有交点,返回 null.
在返回结果后,两个链表仍须保持原有的结构。
可假定整个链表结构中没有循环。
程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。
“听闻远方有你,动身跋涉千里。我吹过你吹过的风,这算不算相拥?我走过你走过的路,这算不算相逢?”
易懂版解释:可以理解成两个人速度一致, 走过的路程一致。那么肯定会同一个时间点到达终点。如果到达终点的最后一段路两人都走的话,那么这段路上俩人肯定是肩并肩手牵手的
A: A+B
B:B+A
如果相交则一定相遇
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
if (headA == null || headB == null) return null;
ListNode pA = headA, pB = headB;
while (pA != pB) {
pA = pA == null ? headB : pA.next;
pB = pB == null ? headA : pB.next;
}
return pA;
}
部分参考leetcode题解【侵删】