题目描述
输入两个链表,找出它们的第一个公共结点。如果有公共结点,则输出它们的第一个公共结点;如果没有公共结点,则输出null即可。
链表的定义
1 | public class ListNode { |
思路
有公共结点的情况:
这个时候就计算出pHead1链表的长度,pHead2链表的长度,然后让长的链表先走它们之间长度的差值,然后pHead1和pHead2同时走,必定同时遇到(此时就是公共结点)。
无公共结点的情况:
这个时候也是采取跟有公共结点一样的思路,让链表长的先走它们长度的差值步数,然后让他们同时走,这个时候同时走到null,返回null即可。
代码
1 | package nowcoder; |
通过
总结
这道题也是中规中矩,现在已经写完了两个链表的相交情况。以前也写过环形链表的入口结点。这两个东西结合起来也是一道非常经典的题目,等下次我来分享给大家。