题目大意
有两个链表,这两个链表可能会有一些公共节点,求第一个公告节点的地址
输入
每组包含一个测试用例,每个用例的第一行是两个链表的地址和节点总数
N
N
N(
≤
1
0
5
\leq 10^5
≤105),之后会有
N
N
N行,每行表示一个节点的信息地址 数据 下个节点的地址,-1表示null
输出
对每个例子输出第一个公共节点,如果没有公共节点,输出-1
样例输入
11111 22222 9
67890 i 00002
00010 a 12345
00003 g -1
12345 D 67890
00002 n 00003
22222 B 23456
11111 L 00001
23456 e 67890
00001 o 00010
00001 00002 4
00001 a 10001
10001 s -1
00002 a 10002
10002 t -1
样例输出
67890
-1
解析
先将节点存在dict里面,再遍历第一条链表并将节点放入一个list,之后遍历第二条链表,直到有节点已经在list里面。但是这题用python会在最后一个测试点超时。。。
# -*- coding: utf-8 -*-
# @Time : 2019/5/28 18:54
# @Author : ValarMorghulis
# @File : 1032.py
def solve():
s, e, n = input().split()
n = eval(n)
tmp = dict()
for i in range(n):
address, data, nex = input().split()
tmp[address] = nex
posa, posb = s, e
ans = list()
while posa != '-1':
ans.append(posa)
posa = tmp[posa]
while (posb not in ans) and posb != '-1':
posb = tmp[posb]
print(posb)
if __name__ == "__main__":
solve()
博客围绕求两个链表首个公共节点地址的题目展开,介绍了题目大意、输入输出要求及样例。输入包含链表地址和节点信息,输出为首个公共节点地址,无则输出 -1。解析中提到将节点存于 dict,遍历链表判断,但该方法在最后一个测试点会超时。
1896

被折叠的 条评论
为什么被折叠?



