记一次面试编程题目(链表相关)

题目:如何判断两个单链表是否有交点。

思路:

  1. 暴力解法:判断第一个链表的节点是否在第二个链表中 O(len1*len2)
  2. Hash解法:第一个链表地址,减去起始节点偏移量作为Hash函数,使用地址存储建立Hash表。遍历第二个链表,查看在Hash表中是否出现。O(len1+len2)
  3. 相连:两个链表连在一起,如果有环,就有交点。
  4. 想法:如果两个链表相交,则从交点后,必然相同。递归遍历到最后,递归结束的时候,一起会,回到不同的地方就得出是否有交点了。

引申题目:链表有环?

  1. 设置快慢指针:定义p、q两个指针,p指针每次向前走一步,q每次向前走两步,若在某个时刻出现 p == q,则存在环。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值