描述
请写一个程序,找到两个单链表最开始的交叉节点。
如果两个链表没有交叉,返回null。
在返回结果后,两个链表仍须保持原有的结构。
可假定整个链表结构中没有循环。
样例
下列两个链表:
A: a1 → a2
↘
c1 → c2 → c3
↗
B: b1 → b2 → b3
在节点 c1 开始交叉。
挑战
需满足 O(n) 时间复杂度,且仅用 O(1) 内存。
思路
先分别遍历一次链表,得到2个链表的长度,然后差值delt就是交叉之前的差值,只要让长一点的先走delt,最后一起走,相遇时就是入口
代码
1 | /** |
-------------end of filethanks for reading-------------