问题陈述 (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
中的条目