多语言展示
当前在线:414今日阅读:126今日分享:42

详解如何获取两条相交的单向链表的起始相交节点

题目:给定两条单向无环链表,实现一个算法,获取其相交段的起始节点,如果两条链表不相交,则算法返回 null 。
工具/原料
1

Eclipse

2

JDK1.8

方法/步骤
1

编写一个表示链表节点的静态内部类,通过该类对象可以构建一条链表结构。

2

实现算法,步骤如下:1. 声明两个链表指针,分别指向两条链表的头节点,如果相等,则为交点;2. 分别向前移动,并记录各自的链表末尾节点;3. 如果两条链表的末尾节点不相等,则不想交,返回 null;4. 到达各自链表终点后,交换指向对方链表的头节点,继续遍历;5. 直到两个指针指向同一个节点,即相交段的起始节点。

3

编写本地测试主方法。

4

运行本地测试主方法,观察控制台输出,符合预期,本地测试通过。

5

平台提交算法,测试通过。

注意事项

该算法的空间复杂度为 O(1),即不借助额外空间求解该问题。

推荐信息