offer-37两个链表是否相交,找第一个公共节点
来源:互联网 发布:linux 时区 -0400 编辑:程序博客网 时间:2024/06/05 14:32
# coding=utf-8'''两个链表是否相交,找第一个公共节点,必知两个链表相交则尾部一定相等,所以长链表先走两个链表长度之差的长度,然后两个指针再一起走'''class ListNode(): def __init__(self,x): self.val=x self.next=Nonedef findcommon(p1,p2): n1=countlength(p1) n2=countlength(p2) if n1<=0 or n2<=0: return 0 phead1=p1 phead2=p2 if n1>=n2: for i in range(n1-n2): phead1=phead1.next else: for i in range(n2-n1): phead2=phead2.next while phead1!=None and phead2!=None: phead1=phead1.next phead2=phead2.next if phead1==phead2: return phead1def countlength(p): if p==None: return -1 phead=p leng=0 while phead.next!=None: phead=phead.next leng+=1 return lengif __name__ == '__main__': node1=ListNode(0) node2=ListNode(3) node3=ListNode(4) node4=ListNode(5) node1.next=node2 node2.next=node3 node3.next=node4 node5=ListNode(1) node6=ListNode(2) node7=ListNode(3) node8=ListNode(4) node9=ListNode(5) node5.next=node6 node6.next=node7 node7.next=node8 node8.next=node9 print(findcommon(node1,node5))
阅读全文
0 0
- offer-37两个链表是否相交,找第一个公共节点
- 已知有两个链表,判断它们是否相交,若相交求其第一个公共节点
- 寻找两个相交链表的第一个公共节点
- 寻找两个相交链表的第一个公共节点
- 寻找两个相交链表的第一个公共节点
- 两个单向链表相交,找到第一个公共节点
- 剑指offer-两个链表的第一个公共节点
- 【剑指offer】两个链表的第一个公共节点
- 剑指offer-两个链表的第一个公共节点
- 【剑指offer】两个链表的第一个公共节点
- 剑指offer------两个链表的第一个公共节点
- 《剑指offer》两个链表的第一个公共节点
- 【刷题剑指offer】两个链表的第一个公共节点
- 剑指offer-两个链表的第一个公共节点
- 剑指offer--两个链表的第一个公共节点
- 剑指offer 两个链表的第一个公共节点
- 判断两个链表是否相交及获得相交的第一个节点
- 判断两个链表是否相交并找出第一个相交节点
- springmvc
- bzoj 1799: [Ahoi2009]self 同类分布
- 手动实现cocos2dx里的lua-binding
- Hive关于内部表外部表以及分区表数据删除总结
- javaScript split 按空格和换行切割
- offer-37两个链表是否相交,找第一个公共节点
- 全局变量与局部变量
- 网络层概念学习之一(基本概念、路由器、选路算法)
- iOS开发中Objective-C 对 URL的URLEncode(编码)与URLDecode(解码)
- CentOS6.x 安装 Docker 和 Docker Compose
- 压缩js文件
- 任学堂:美国和联合国教科文组织的恩怨
- IntServ
- C++迭代器