删除朋友黑客地球:运行时错误 - NZEC :索引错误:deque索引超出范围



问题陈述 (https://www.hackerearth.com/problem/algorithm/remove-friends-5(

我被困在这个问题上。请指出什么是错误的,可以做些什么来获得正确的输出。

谢谢你的帮助

获得博士学位后,克里斯蒂在她的大学里成为了名人,她的Facebook个人资料充满了朋友的请求。作为一个好女孩,克里斯蒂接受了所有的要求。

现在库尔迪普嫉妒她从其他男人那里得到的所有关注,所以他要求她从她的朋友列表中删除一些男人。为了避免出现"场景",克里斯蒂决定从她的好友列表中删除一些朋友,因为她知道她拥有的每个朋友的人气,她使用以下算法删除了一个朋友。

算法删除(好友(:

DeleteFriend=false
for i = 1 to Friend.length-1
if (Friend[i].popularity < Friend[i+1].popularity)
delete i th friend
DeleteFriend=true
break
if(DeleteFriend == false)
delete the last friend

输入:第一行包含 T 个测试用例。每个测试用例的第一行包含 N,克里斯蒂当前拥有的朋友数量和 K ,克里斯蒂决定删除的朋友数量。接下来的几行包含她的朋友被空格隔开的人气。

输出:对于每个测试用例,打印N-K数字,代表删除K朋友后佳士得朋友的受欢迎程度。

注意 删除 K 个好友后的朋友顺序应保持输入中给出的顺序。

示例输入:

3

3 1

3 100 1

5 2

19 12 3 4 17

5 3

23 45 11 77 18

示例输出

100 1

19 12 17

77 18

我的解决方案:

import collections as col
def delete(n, k, frnd):
temp = []
while k!=0:   
for f in frnd:
if f<f+1:
del frnd[f]
k -= 1
temp.append(frnd)
print(" ".join(map(str, temp))) 
for i in range(int(input())):
n, k = (map(int, input().split()))
frnd = col.deque(list(map(int, input().split())))
delete(n, k, frnd)

要修复错误,请使用将for循环替换为

for idx, f in enumerate(frnd):
if f<f+1:
del frnd[idx]
break # <------

您收到错误是因为您使用值而不是索引来删除deque中的条目

最新更新