PAT 乙级 1075 链表元素分类 python 测试点5运行超时

题目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
思路
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')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值