程序员面试题精选(33):两单向链表相交问题
2007-10-28 15:18
344 查看
题目:
给出两个单向链表的头指针,比如h1、h2,
判断链表是否相交,如果不相交返回NULL;如果相交,返回指向第一个相交节点的指针;
时间复杂度控制在O(n)的前提下。
这道题首先要弄明白的是,两单向链表相交的话,一定是Y型相交,不可能出现X型,弄清楚这点后接下来的工作就是:
(1)先找到h1,h2的最后一个节点p1和p2,同时记录节点数量a,b;
(2)判断最后一个节点是否相同;
如果不相同则没相交;
如果相同,则从第一个节点和|a-b|+1个节点开始比较,看是否相等,不相等就寻找下一个节点直到找到交叉点。
给出两个单向链表的头指针,比如h1、h2,
判断链表是否相交,如果不相交返回NULL;如果相交,返回指向第一个相交节点的指针;
时间复杂度控制在O(n)的前提下。
这道题首先要弄明白的是,两单向链表相交的话,一定是Y型相交,不可能出现X型,弄清楚这点后接下来的工作就是:
(1)先找到h1,h2的最后一个节点p1和p2,同时记录节点数量a,b;
(2)判断最后一个节点是否相同;
如果不相同则没相交;
如果相同,则从第一个节点和|a-b|+1个节点开始比较,看是否相等,不相等就寻找下一个节点直到找到交叉点。
相关文章推荐
- 程序员面试题精选100题(33)-在O(1)时间删除链表结点[数据结构]
- 程序员面试题精选100题(33)-在O(1)时间删除链表结点[数据结构]
- 两单向链表相交问题
- 程序员面试题精选100题(33)-在O(1)时间删除链表结点[数据结构]
- 两单向链表相交问题
- 判断单链表是否存在环,判断两个链表是否相交问题详解
- 转:判断两个单向链表是否相交,并找到两个单向链表的第一个相交节点
- 两个链表相交的一系列问题
- 单链表面试题系列之链表相交问题
- 程序员面试题精选100题(33)-在O(1)时间删除链表结点[数据结构]
- 链表有环和相交问题
- [转]面试精选:链表问题集锦
- 判断单链表是否存在环,判断两个链表是否相交问题详解
- 程序员面试题精选(09)-查找链表中倒数第k个结点
- 两个单向链表相交,找到第一个公共节点
- 链表相交问题:判断两个链表是否相交,若相交求交点
- 如何判断两个单向链表是否有相交,并找出交点
- flag4给出俩个单向链表的头指针,比如pA,pB,判断这俩个链表是否相交
- 如何判断两个单向链表是否有相交,并找出交点 (转)
- 单向链表结点删除问题