程序员面试题精选(33):两单向链表相交问题

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

你可能感兴趣的:(工作,面试,null)