由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 发一道面试题
相关主题
求问多个链表相交,找第一个交点怎么做?再上一简单点面试题了
问一个链表方面的算法问题 (转载)问一道常见面试题,reverse a linked list
两道面试题分享一个面试题,烙印出的,估计栽在这儿了
怎么返回单链表里面的环的前一个节点的位置?发个A公司的面经
问一个链表的问题hash_map 的遍历问题
一道链表题及其变种两个链表怎么查找相交点?
讨论 找单链表倒数m的节点一道老题
分享一个链表相关的面试题链表复制问题
相关话题的讨论汇总
话题: 链表话题: 有环话题: 交点话题: 相交话题: 两个
进入JobHunting版参与讨论
1 (共1页)
d********n
发帖数: 191
1
应该是道老题了,不过后来跟朋友讨论时有些新情况。前几天面试考的,
【都是单向链表】
1.如何判断两个链表相交。
方法不少,遍历两个链表,看最后一个节点是不是相同。或者将其中一个表首尾相连,
看另一个表是不是有环(指针一个一次走一步,一个一次走两步两步,blablabla)
2. 如何找到相交的那个点?
方法也不少。reverse两个链表,从头开始走,走到某一个点不同时,上一个点就是交
点。或者两个链表依次入栈,一个个往外pop,然后比较,跟reverse类似
还有就是便利两个链表,得到长度m和n,然后得到长度差abs(m-n),较长的链表先走
abs(m-n)这么多个点,然后两边一起走,第一个相同的就是交点。
问题来了,如果两个链表其中一个是有环的,应该怎么解决?特别是针对第一个问题。
见附图
P**********c
发帖数: 3417
2
可以对有环的那个先找到环的交点,然后分两段考虑?

【在 d********n 的大作中提到】
: 应该是道老题了,不过后来跟朋友讨论时有些新情况。前几天面试考的,
: 【都是单向链表】
: 1.如何判断两个链表相交。
: 方法不少,遍历两个链表,看最后一个节点是不是相同。或者将其中一个表首尾相连,
: 看另一个表是不是有环(指针一个一次走一步,一个一次走两步两步,blablabla)
: 2. 如何找到相交的那个点?
: 方法也不少。reverse两个链表,从头开始走,走到某一个点不同时,上一个点就是交
: 点。或者两个链表依次入栈,一个个往外pop,然后比较,跟reverse类似
: 还有就是便利两个链表,得到长度m和n,然后得到长度差abs(m-n),较长的链表先走
: abs(m-n)这么多个点,然后两边一起走,第一个相同的就是交点。

W**********r
发帖数: 8927
3
我的答案:
if(用快慢指针从A的头出发测A是不是有环 == Yes) {
if (用快慢指针分别从A和B的头出发测是否相遇 == Yes) {
确认相交;
追上的一点肯定在环上,以此可以遍历环,再分别从A和B出发依次比较是不是在环上的话,最后可以确定分别的交点。
}
else {
确认不相交;
}
}
else {
if(用快慢指针从B的头出发测B是不是有环 == Yes) {
确认不相交;
}
else {
遍历两个链表,得到长度m和n,然后得到长度差abs(m-n),较长的链表先走abs(m-n)这么多个点,然后两边一起走,第一个相同的就是交点。始终不同就没交点。
}
}
b*******8
发帖数: 37364
4
分别对每个链表判断是否有环,有环则记录环的交点,无环则记录终点。
如俩链表一个环一个非环,则断然不交。
如两个都非环,则看终点相同与否。
如都有环,则从一个环的交点出发走一圈看能否到另一个环的交点(同时出发速递1和2
的快慢指针,追上时正好慢指针走完一圈)。
s******n
发帖数: 226
5
看地址,第一个地址相同的node是焦点
s******n
发帖数: 226
6
看地址,第一个地址相同的node是焦点
1 (共1页)
进入JobHunting版参与讨论
相关主题
链表复制问题问一个链表的问题
链表中每三个数逆转的题?一道链表题及其变种
面试面试官错了怎么办?讨论 找单链表倒数m的节点
北美点评网面经分享一个链表相关的面试题
求问多个链表相交,找第一个交点怎么做?再上一简单点面试题了
问一个链表方面的算法问题 (转载)问一道常见面试题,reverse a linked list
两道面试题分享一个面试题,烙印出的,估计栽在这儿了
怎么返回单链表里面的环的前一个节点的位置?发个A公司的面经
相关话题的讨论汇总
话题: 链表话题: 有环话题: 交点话题: 相交话题: 两个