python数据结构剑指offer-两个链表的第一个公共结点
例题
描述
输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)
数据范围: n \le 1000n≤1000
要求:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)
例如,输入{1,2,3},{4,5},{6,7}时,两个无环的单向链表的结构如下图所示:
可以看到它们的第一个公共结点的结点值为6,所以返回结点值为6的结点。
输入描述:
输入分为是3段,第一段是第一个链表的非公共部分,第二段是第二个链表的非公共部分,第三段是第一个链表和二个链表的公共部分。 后台会将这3个参数组装为两个链表,并将这两个链表对应的头节点传入到函数FindFirstCommonNode里面,用户得到的输入只有pHead1和pHead2。
返回值描述:
返回传入的pHead1和pHead2的第一个公共结点,后台会打印以该节点为头节点的链表。
示例1
输入:
{1,2,3},{4,5},{6,7}
复制
返回值:
{6,7}
复制
说明:
第一个参数{1,2,3}代表是第一个链表非公共部分,第二个参数{4,5}代表是第二个链表非公共部分,最后的{6,7}表示的是2个链表的公共部分
这3个参数最后在后台会组装成为2个两个无环的单链表,且是有公共节点的
示例2
输入:
{1},{2,3},{}
复制
返回值:
{}
复制
说明:
2个链表没有公共节点 ,返回null,后台打印{}
解决方案
def FindFirstCommonNode(self , pHead1 , pHead2 ):# write code herep1,p2=pHead1,pHead2while p1!=p2:
# print('p101',p1.val)
# print('p201',p2.val)
# p1 = p1.next if p1 else pHead2
# print('p102',p1)
# p2 = p2.next if p2 else pHead1
# print('p202',p2)if p1:print('p101',p1)p1 = p1.nextelse:print('p102',p1)p1 = pHead2if p2:print('p201',p2)p2 = p2.nextelse:print('p202',p2)p2 = pHead1return p2
总结
遇到两个链表比较相等得值,链表一般是由指针域跟值域组成,一般都是比较值域得值,但是值域每次判断比较麻烦,可以把他们统一遍历一遍,这个时候他们得指针域跟值域都知道了,然后求相同得部分只需要各自遍历对方即可,这样原本A里面得链表在B里面遍历得时候,遇到A里面存在得地址,他们会产生化学反应相等,同理B里面得链表在A里面遍历得时候,遇到B里面存在得地址,也会产生化学反应
python数据结构剑指offer-两个链表的第一个公共结点相关推荐
- [剑指offer] 两个链表的第一个公共结点
本文首发于我的个人博客:尾尾部落 题目描述 输入两个链表,找出它们的第一个公共结点. 解题思路 如果两个链表存在公共结点,那么它们从公共结点开始一直到链表的结尾都是一样的,因此我们只需要从链表的结尾开 ...
- 剑指offer_两个链表的第一个公共结点
题目描述 输入两个链表,找出它们的第一个公共结点. 解题思路: 遇到这种题目,瞬间想到HashMap- 用一个HashMap依次记录第一个链表的结点: 遍历第二个链表结点,一旦在HashMap中找到, ...
- 剑指offer——面试题37:两个链表的第一个公共结点
剑指offer--面试题37:两个链表的第一个公共结点 20180906整理 Solution1: 时间复杂度为O(n2)O(n2)O(n^2)的垃圾算法 /* struct ListNode {in ...
- 《剑指Offer》Java刷题 NO.36 两个链表的第一个公共结点(链表,等长拼接法,长者先行法,辅助栈)
<剑指Offer>Java刷题 NO.36 两个链表的第一个公共结点(链表,等长拼接法,长者先行法,辅助栈) 传送门:<剑指Offer刷题总目录> 时间:2020-06-19 ...
- 《剑指offer》-- 两个链表的第一个公共结点、链表中环的入口结点、删除链表中的重复结点
一.两个链表的第一个公共结点: 1.题目: 输入两个链表,找出它们的第一个公共结点. 2.解题思路: (1)第一种:找出两个链表的长度,然后让长的链表先走两个链表的长度差,接着两个链表一起走. (2) ...
- [剑指offer]面试题37:两个链表的第一个公共结点
面试题37:两个链表的第一个公共结点 题目:输入两个链表,找出它们的第一个公共结点.链表结点定义如下: struct ListNode {int val;ListNode *next;ListNode ...
- c++ 链表_剑指offer系列——52. 两个链表的第一个公共结点
题目链接门 两个链表的第一个公共结点_牛客网www.nowcoder.com 题目描述 输入两个链表,找出它们的第一个公共结点.(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保 ...
- 36 剑指offer--链表--两个链表的第一个公共结点
两个链表的第一个公共结点 题目 输入两个链表,找出它们的第一个公共结点. 思路 这道题和160.Intersection of Two Linke ...
- 求两个链表的第一个公共结点各种情况及三种思路分析
转自:http://blog.csdn.net/ssopp24/article/details/72377184 1.寻找两个链表的第一个公共结//这道题可以有很多种思路, 我们按照, 有坏到好的顺序 ...
- 链表2--JZ25复杂链表的复制JZ36两个链表的第一个公共结点JZ55链表中环的入口结点JZ56删除链表中重复的结点
JZ25复杂链表的复制 >>点击此链接 JZ36两个链表的第一个公共结点 题目描述 输入两个无环的单链表,找出它们的第一个公共结点.(注意因为传入数据是链表,所以错误测试数据的提示是用其他 ...
最新文章
- thinkphp集成系列之phpmailer批量发送邮件
- 《精通Spring4.X企业应用开发实战》读后感第五章(注入参数详解)
- JavaSE(二十一)——栈和队列、栈和堆
- 牛客网递归错题:递归、欧几里得求最大公约数的时间复杂度、线性递归与尾递归实例区别
- Linux下出现permission denied的解决办法
- 统计Apache或Nginx访问日志里的独立IP访问数量的Shell
- STM32学习:串口通讯(proteus仿真)
- 万无一失,网站的高可用架构
- 贝叶斯网络结构学习之MCMC算法(基于FullBNT-1.0.4的MATLAB实现)
- Ubuntu 的护眼软件 :RedShift
- 在硅谷初创公司怎么找投资人
- 怎样对生产环境10T RAC新增Adg 不对现有主库产生任何负载,不占用网络带宽?
- 网速由100M变成10M的原因与解决方法
- python验证角谷_角谷猜想-随心随性无为而为-51CTO博客
- Microsoft.Office.Interop.Word 创建word
- Python 抓取 快代理、西刺代理 、西拉代理等等 构建免费代理池
- Mac 环境下 Java JDK 的安装与环境变量配置详解(已完美解决)
- 从985非科班到网易伏羲CV算法岗
- 恒大造车,从来都不是梦
- iPhone 在手,优势在沃
热门文章
- 梯度下降和delta法则
- 吴恩达深度学习5.3练习_Sequence Models_Neural machine translation with attention
- 论文阅读笔记五十三:Libra R-CNN: Towards Balanced Learning for Object Detection(CVPR2019)
- JPA、Hibernate、Mybatis的区别
- 更新yum源却忘了生成缓存 造成每次启动机器报:the package list needs to be rebuilt...
- mysql优化连接数防止访问量过高的方法
- 创建精简的SharePoint页面
- Visual Studio 2010 实用功能总结 II
- nginx配置文件祥解
- Luogu 3479 [POI2009]GAS-Fire Extinguishers