题目描述:输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)
问题分析:两个链表如果有公共节点,那么两链表必有一部分是重合的。假如两个链表分别为a、b,a的长度为n,b的长度为m,公共部分的长度为l,那么就有[n+(m-l)]=[m+(n-l)],如果从两个链表的头节点开始进行遍历,把本链表遍历完后的指针指向对方链表的头节点并继续遍历,在n+m-l步后,两个指针将会同时指向第一个公共节点,如下图:

代码截图:

题目描述:输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)
问题分析:两个链表如果有公共节点,那么两链表必有一部分是重合的。假如两个链表分别为a、b,a的长度为n,b的长度为m,公共部分的长度为l,那么就有[n+(m-l)]=[m+(n-l)],如果从两个链表的头节点开始进行遍历,把本链表遍历完后的指针指向对方链表的头节点并继续遍历,在n+m-l步后,两个指针将会同时指向第一个公共节点,如下图:
代码截图:
本文标题:【剑指Offer刷题小记】两个链表的第一个公共节点(JAVA版)
本文链接:https://www.haomeiwen.com/subject/ywivuhtx.html
网友评论