首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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-08 19:07
杭州电子科技大学 大数据开发工程师
校招焚诀炼气篇-拒绝机械背八股
现在的面试官耳朵都听起茧子了,你如果背诵得像个没有感情的机器,多半走不远。 八股文要背,但要结合实际场景。比如问到数据库,你别干巴巴地只说 MySQL 怎么建索引、怎么调优。你得能往深了扯,比如顺带聊聊 OLTP 和 OLAP 的区别对比:“日常的业务增删改查(OLTP)咱们用 MySQL 肯定没问题,但如果考虑到未来海量数据的聚合分析,我会在架构设计时考虑引入 Doris 这种列式存储引擎(OLAP)……” 懂点技术选型和底层逻辑,面试官才会觉得你不是个只会照本宣科的 CRUD 码农。
交出你的校招焚诀
点赞
评论
收藏
分享
03-10 19:25
已编辑
门头沟学院 Java
MySQL 索引与数据存储位置详解(InnoDB 引擎)
ps:如果这篇帖子对于还在找工作和找实习的你有所帮助,可以关注我,给本贴点赞、评论、收藏并订阅专栏;同时不要吝啬您的花花MySQL 中索引与数据的存储位置,核心取决于所使用的存储引擎,其中 InnoDB 作为当前 MySQL 默认存储引擎,其索引与数据采用“索引组织表(IOT)”模式实现一体化存储,索引即是数据的组织载体,数据的存储位置与索引结构深度绑定;而 MyISAM 引擎采用“非索引组织表”模式,索引与数据分开存储,二者存储位置相互独立。本文重点围绕 InnoDB 引擎,详细解析索引与数据的存储位置、层级分布及关联机制,同时简要对比 MyISAM 引擎差异,确保内容的专业性与严谨性。一、...
MySQL存储引擎与索引
点赞
评论
收藏
分享
03-12 15:40
门头沟学院 运营
刚加上这个hr,结果是个广子,发完第一句话就被封号了微信
点赞
评论
收藏
分享
02-21 17:19
电子科技大学 Java
这个简历可以去找暑期实习了吗
大佬们看看,有没有什么还要修改的地方,第一个项目做的是黑马点评,加了一个rabbitMQ,第二个项目是鱼皮的API开放平台结合了一下鱼皮的大语言对话模型项目
手撕震撼面试官一整年:
电子科大加上加粗加上985
点赞
评论
收藏
分享
昨天 11:15
门头沟学院 测试开发
佬们帮看一下offer
👋个人背景:双非学院👏offer1:广州欢聚集团 shopline测开实习生 感觉title比较大点 但是折算下来差不多200一天💯offer2:上海一家100-599的公司 测开实习生 可能不是很出名 但是给的320/天有在欢聚待过的佬说说看接触的一些业务吗
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
快手Java后端一面
5679
2
...
字节后端日常实习二面
5031
3
...
腾讯前端暑期提前批一、二、三面面经
4840
4
...
滴滴一面面经
4035
5
...
腾讯暑期一面
3700
6
...
6个AI实操技巧,帮你在简历+面试中拉开差距
3539
7
...
阿里云一面
2964
8
...
美团产品笔试何意为....
2949
9
...
字节一面、二面(横向挂)
2699
10
...
实习学不到东西的真相
2425
创作者周榜
更多
正在热议
更多
#
你感受到金三银四了嘛?
#
70421次浏览
611人参与
#
美团笔试
#
695636次浏览
4624人参与
#
虽然0面试,但今天___,夸夸自己
#
8740次浏览
172人参与
#
米哈游笔试
#
551382次浏览
1088人参与
#
春招 / 实习投递,你最焦虑的一件事
#
52837次浏览
1025人参与
#
vivo笔试
#
13007次浏览
122人参与
#
27届实习投递记录
#
849次浏览
22人参与
#
AI岗位暴涨12倍,你会转AI赛道吗?
#
4601次浏览
90人参与
#
今天你投了哪些公司?
#
144277次浏览
2596人参与
#
金三银四,你的春招进行到哪个阶段了?
#
18640次浏览
254人参与
#
运营每日一题
#
127439次浏览
900人参与
#
美团秋招笔试
#
194670次浏览
1065人参与
#
小米编程考试
#
31325次浏览
151人参与
#
字节7000实习来了,你投了吗?
#
4334次浏览
20人参与
#
刚工作的你,踩过哪些坑?
#
6052次浏览
137人参与
#
AI项目实战
#
6543次浏览
307人参与
#
小米笔试
#
139062次浏览
994人参与
#
找工作,你都让AI帮你做什么?
#
6750次浏览
214人参与
#
软件开发春招备战日记
#
93005次浏览
611人参与
#
vivo求职进展汇总
#
277837次浏览
1558人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务