题目

给定两个单链表,查找这两个单链表的第一个交叉节点。

例如:链表list_a为:a1→a2→c1→c2→c3,链表list_b为:b1→b2→b3→c1→c2→c3。那么它们第一个交叉结点为c1。

解析

如果两个链表有交叉结点的话,那么交叉节点之后的其他节点都是相同的,即两个链表的结构是Y字型。

   a1→a2↘
c1→c2→c3
b1→b2→b3↗

可以先获取两个链表的长度,再设定两个指针分别遍历两个链表:让长度较大的链表指针先走|len(list_a)−len(list_b)|步,然后两个指针同步前进,判断第一个相同的结点。

Python实现

# coding=utf-8

class Node(object):
def __init__(self, value=None, next=None):
self.value = value
self.next = next def get_list_length(head):
"""获取链表长度"""
length = 0
while head:
length += 1
head = head.next
return length def get_intersect_node(list_a, list_b):
"""查找链表第一个交叉结点"""
length_a = get_list_length(list_a)
length_b = get_list_length(list_b) cur1, cur2 = list_a, list_b
if length_a > length_b:
for i in range(length_a - length_b):
cur1 = cur1.next
else:
for i in range(length_b - length_a):
cur2 = cur2.next flag = False
while cur1 and cur2:
if cur1.value == cur2.value:
print(cur1.value)
flag = True
break
else:
cur1 = cur1.next
cur2 = cur2.next if not flag:
print('链表没有交叉结点') if __name__ == '__main__':
list_a = Node('a1', Node('a2', Node('c1', Node('c2', Node('c3'))))) # 构造不带头结点的链表:a1→a2→c1→c2→c3
list_b = Node('b1', Node('b2', Node('b3', Node('c1', Node('c2', Node('c3')))))) # 构造不带头结点的链表:b1→b2→b3→c1→c2→c3 get_intersect_node(list_a, list_b)

最新文章

  1. centos安装nodejs
  2. 启动第一个 KVM 虚机 - 每天5分钟玩转 OpenStack(4)
  3. vmware 虚拟机中添加新网卡无配置文件
  4. 第九篇、UITabbar增加类别用来标红点
  5. python:字符串取值
  6. asp.net 验证码技术
  7. 1.跨平台开发之~ VSCode开发第一个C程序
  8. BZOJ1304: [CQOI2009]叶子的染色
  9. shell的date日期循环方法:日期格式转时间戳计算,再将时间戳转回日期格式
  10. OracleSql语句学习(四)
  11. ubuntu装bochs的常见问题
  12. Apktool反编译apk资源文件
  13. [剑指Offer]7-重建二叉树
  14. 背水一战 Windows 10 (80) - 本地化
  15. ZooKeeper客户端原生API的使用以及ZkClient第三方API的使用
  16. 剑指offer-青蛙变态跳台阶-全概率公式
  17. wireshark的过滤
  18. linux下安装mysql-5.7.20
  19. 458. Poor Pigs
  20. HDU4864 Task

热门文章

  1. eclipse配置android开发环境并搭建第一个helloWord工程
  2. WebAPI创建
  3. 17.NET Core WebApi跨域问题
  4. 11个炫酷的 Linux 终端命令
  5. spring的工厂方法
  6. mysql mysqldump 本地数据库导入本地数据库的命令
  7. 报错:无法打开"cocos-ext.h" /添加第三方库
  8. 实战:ADFS3.0单点登录系列-前置准备
  9. AD7190的小总结
  10. IDA逆向:结构体的逆向