题目
思路
1 按序连接链表,利用字典存储,add作为key,data,nextadd作为value
2 遍历存储数组,对每个节点按照分类存储
3 将分类存储的数组拼接并输出
最后测试点5超时未解决
代码
first_add,node_num,k=input().split(' ')
node_num=int(node_num)
k=int(k)
input_list={}
for i in range(node_num):
Address,Data,Next=input().split()
input_list[Address]=[Data,Next]
valid_list= {}
# 先遍历数组是否每个节点都是有效的
add=first_add
valid_list[add]=input_list[add]
while(input_list[add][1]!='-1'):#不是最后一个节点就继续
add=input_list[add][1]
valid_list[add] = input_list[add]
minus_zone=[]
before_k=[]
equal_k=None
k_after=[]
#对有效链条里的节点进行分类
for add in valid_list: #不是最后一个节点就继续
data=valid_list[add][0]
next_add=valid_list[add][1]
if int(data)<0:
minus_zone.append([add,data,next_add])
else:
if int(data)<k:
before_k.append([add,data,next_add])
elif int(data)==k:
equal_k=[add,data,next_add]
else:
k_after.append([add,data,next_add])
# add=next_add
print_=[]
if minus_zone:
print_.extend(minus_zone)
if before_k:
print_.extend(before_k)
if equal_k:
print_.extend([equal_k])
if k_after:
print_.extend(k_after)
for i in range(0,len(print_)-1):
print(f'{print_[i][0]} {print_[i][1]} {print_[i+1][0]}')
print(f'{print_[-1][0]} {print_[-1][1]} -1')