题目:
给出两个单向链表的头指针,比如h1、h2,
判断链表是否相交,如果不相交返回NULL;如果相交,返回指向第一个相交节点的指针;
时间复杂度控制在O(n)的前提下。
这道题首先要弄明白的是,两单向链表相交的话,一定是Y型相交,不可能出现X型,弄清楚这点后接下来的工作就是:
(1)先找到h1,h2的最后一个节点p1和p2,同时记录节点数量a,b;
(2)判断最后一个节点是否相同;
(2)判断最后一个节点是否相同;
如果不相同则没相交;
如果相同,则从第一个节点和|a-b|+1个节点开始比较,看是否相等,不相等就寻找下一个节点直到找到交叉点。
如果相同,则从第一个节点和|a-b|+1个节点开始比较,看是否相等,不相等就寻找下一个节点直到找到交叉点。
本文介绍了一种在O(n)时间复杂度内判断两个单向链表是否相交的方法。首先找到两个链表的末尾节点并判断是否相同,如果相同则进一步查找相交节点。
1万+

被折叠的 条评论
为什么被折叠?



