首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
开心就好e
哈尔滨理工大学 Java
发布于上海
关注
已关注
取消关注
@Maokt:
题解 | #两个链表的第一个公共结点#
算法思想一:双指针 解题思路: 使用两个指针 a,b 分别指向两个链表 pHead1,pHead2的头结点,然后同时分别逐结点遍历,当 a 到达链表 pHead1的末尾时,重新定位到链表 pHead2的头结点;当 b 到达链表 pHead2 的末尾时,重新定位到链表 pHead1的头结点。当双指针相遇时,所指向的结点就是第一个公共结点 图解: 代码展示: Python版本 class Solution: def FindFirstCommonNode(self , pHead1 , pHead2 ): # write code here a = pHead1 b = pHead2 # 当两者相同则是第一个公共节点 while a!=b: # a从pHead1遍历完再遍历pHead2 a = a.next if a else pHead2 # b从pHead2遍历完再遍历pHead1 b = b.next if b else pHead1 return a 复杂度分析 时间复杂度O(M+N):M, N分别表示 pHead1, pHead2的链表长度,最差情况下需要遍历完两个链表 空间复杂度O(1):仅使用常数级变量空间 算法思想二:集合set 解题思路: 做这题最容易想到的一种解决方式就是先把第一个链表的节点全部存放到集合set中,然后遍历第二个链表的每一个节点,判断在集合set中是否存在,如果存在就直接返回这个存在的结点。如果遍历完了,在集合set中还没找到,说明他们没有相交,直接返回null即可 代码展示: JAVA版本 import java.util.*;/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { //创建集合set Setset = new HashSet<>(); //先把链表1的结点全部存放到集合set中 while (pHead1 != null) { set.add(pHead1); pHead1 = pHead1.next; } //然后访问链表2的结点,判断集合中是否包含链表2的结点,如果包含就直接返回 while (pHead2 != null) { if (set.contains(pHead2)) return pHead2; pHead2 = pHead2.next; } //如果集合set不包含链表2的任何一个结点,说明没有交点,直接返回null return null; }} 复杂度分析 时间复杂度O(M+N):M, N分别表示 pHead1, pHead2的链表长度,最差情况下需要遍历完两个链表 空间复杂度O(M):需要额外集合空间存储 pHead1 结点 算法思想三:统计两个链表的长度 解题思路: 还可以先统计两个链表的长度,如果两个链表的长度不一样,就让链表长的先走,直到两个链表长度一样,这个时候两个链表再同时每次往后移一步,看节点是否一样,如果有相等的,说明这个相等的节点就是两链表的交点,否则如果走完了还没有找到相等的节点,说明他们没有交点,直接返回null即可 图解: 代码展示: JAVA版本 public class Solution { public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { //统计链表A和链表B的长度 int lenA = length(pHead1), lenB = length(pHead2); //如果节点长度不一样,节点多的先走,直到他们的长度一样为止 while (lenA != lenB) { if (lenA > lenB) { //如果链表A长,那么链表A先走 pHead1 = pHead1.next; lenA--; } else { //如果链表B长,那么链表B先走 pHead2 = pHead2.next; lenB--; } } //然后开始比较,如果他俩不相等就一直往下走 while (pHead1 != pHead2) { pHead1 = pHead1.next; pHead2 = pHead2.next; } //走到最后,最终会有两种可能,一种是headA为空, //也就是说他们俩不相交。还有一种可能就是headA //不为空,也就是说headA就是他们的交点 return pHead1; } //统计链表的长度 private int length(ListNode node) { int length = 0; while (node != null) { node = node.next; length++; } return length; }} 复杂度分析 时间复杂度O(M+N):M, N分别表示 pHead1, pHead2的链表长度,最差情况下需要遍历完两个链表 空间复杂度O(1):仅使用常数级空间变量
点赞 36
评论 6
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
03-10 20:14
拼多多_拼多多
2026春招 & 2027技术实习求职规划:写给所有计算机专业同学的一点真心建议
每年到了春招季,总会有很多同学焦虑:“春招是不是已经结束了?”“现在准备 2027 实习还来得及吗?”“技术岗到底应该怎么准备?”如果你正在经历这些困惑,这篇文章可能会给你一些方向。一、2026届春招:机会其实还在很多人以为春招只是“秋招失败后的补录”,其实并不完全是这样。在过去几年里,春招已经逐渐变成 很多企业正式招聘的重要阶段。尤其是以下几类公司:互联网公司补录 HCAI / 数据基础设施公司ToB 技术公司银行 / 国企科技岗春招有一个很重要的特点:竞争比秋招小,但岗位也更少。所以策略很简单:不要只投“大厂”。建议把目标分为三层:第一梯队(冲刺)大厂核心技术团队AI / 数据基础设施公司...
__我爱学习__:
学到了,大佬
帮你内推|拼多多集团-PDD 实习
点赞
评论
收藏
分享
03-09 12:54
门头沟学院 Java
25年10月得物 JAVA开发 一面
#JAVA##JAVA面经##JAVA内推# 死锁发生的四个必要条件是什么?平时写多线程代码时,你会怎么主动避开这些坑? “四个必要条件:互斥条件、请求与保持、不可剥夺、循环等待。 主动避坑三招: 1️⃣ 固定加锁顺序:项目中所有涉及userLock和orderLock的操作,强制约定先加userLock再加orderLock(代码规范+Checkstyle插件校验) 2️⃣ 超时放弃:ReentrantLock.tryLock(3, TimeUnit.SECONDS),超时直接释放已持锁并告警 3️⃣ 避免嵌套锁:将大锁拆为细粒度锁(如订单状态更新单独加锁),用ConcurrentHash...
【八股真解】精炼最新高频...
点赞
评论
收藏
分享
03-08 02:52
宁夏理工学院 测试工程师
26应届求锐评!
意向岗位是软件测试,投了快一年没几个理我的
点赞
评论
收藏
分享
03-04 07:14
门头沟学院 C++
实习无薪资
这种要去吗?
后测速成辅导一两个月...:
老板:都给工作机会了还想要工资,哪来这么多好事
点赞
评论
收藏
分享
03-13 21:27
已编辑
字节跳动_TT图文_研发(实习员工)
再战27暑期实习!Shoppe虾皮 广告搜索二面
1. 自我介绍2. 算法题(全英文)给定一个二维数组:1 2 34 5 67 8 9你需要找到pointA到pointB,路径有C个点的路径数量Input1 3 3Output5从1到3,合法的路径有:1->2->3 1->4->3. 1->5->3. 1->6->3 1->8->3.1->7->3 不合法是因为1->7中间经过了4(多了一个点)额外补充:你经过的点可以在下次经过的时候可以跳过比如Input:4 4 5那么其中有一条合法路径就是 4->1->7->5(因为经过了4,所以1到7中间经过...
查看3道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
快手Java后端一面
4435
2
...
转转二面
4055
3
...
滴滴一面面经
3933
4
...
字节后端日常实习二面
3851
5
...
腾讯前端暑期提前批一、二、三面面经
3763
6
...
6个AI实操技巧,帮你在简历+面试中拉开差距
3461
7
...
腾讯暑期一面
3085
8
...
美团产品笔试何意为....
2541
9
...
阿里云一面
2382
10
...
实习学不到东西的真相
2241
创作者周榜
更多
正在热议
更多
#
你感受到金三银四了嘛?
#
69682次浏览
611人参与
#
美团笔试
#
695096次浏览
4623人参与
#
虽然0面试,但今天___,夸夸自己
#
8571次浏览
172人参与
#
米哈游笔试
#
550506次浏览
1088人参与
#
春招 / 实习投递,你最焦虑的一件事
#
52451次浏览
1022人参与
#
vivo笔试
#
12976次浏览
122人参与
#
27届实习投递记录
#
832次浏览
22人参与
#
AI岗位暴涨12倍,你会转AI赛道吗?
#
4465次浏览
90人参与
#
今天你投了哪些公司?
#
142549次浏览
2586人参与
#
金三银四,你的春招进行到哪个阶段了?
#
18604次浏览
254人参与
#
运营每日一题
#
127412次浏览
900人参与
#
美团秋招笔试
#
194613次浏览
1065人参与
#
小米编程考试
#
31183次浏览
151人参与
#
字节7000实习来了,你投了吗?
#
4254次浏览
20人参与
#
刚工作的你,踩过哪些坑?
#
5925次浏览
136人参与
#
AI项目实战
#
6446次浏览
306人参与
#
小米笔试
#
138996次浏览
994人参与
#
找工作,你都让AI帮你做什么?
#
6603次浏览
213人参与
#
软件开发春招备战日记
#
92987次浏览
611人参与
#
vivo求职进展汇总
#
277787次浏览
1558人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务