首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码为768 A:测试10的错误答案

代码为768 A:测试10的错误答案
EN

Stack Overflow用户
提问于 2022-07-05 06:52:16
回答 1查看 63关注 0票数 -1

“夜的集合,现在我的手表开始了。它不会结束,直到我死。我将不带妻子,没有土地,没有孩子。我将不戴皇冠,也不会赢得荣誉。我将在我的岗位上生和死。我是黑暗中的剑。我是墙上的守望者。我是保卫人类王国的盾牌。我向守夜人发誓,为了今夜和未来的所有夜晚,我发誓我的生命和荣誉。”--守夜誓言。

这就开始了琼恩·雪诺的手表。他被指派去支持管理人员。

这一次,他和他的管家在一起,他必须为他提供支持。每个管家都有自己的力量。琼恩·雪诺喜欢支持一位管家,但前提是至少有一位管家的力量严格地低于他,而至少有一位管家的力量比他强。

你能找到乔恩会支持多少个管家吗?

这是我正试图解决的问题的链接:https://codeforces.com/contest/768/problem/A

我的解决方案基本上对分配给每个管理员的值列表进行排序,检测与列表中最小或最大值相等的任何项,然后删除所描述的值。这样,我们就可以通过打印新列表的长度来找到列表中既不是最大也不是最小的项目数,这样我们就可以得到问题的答案。

下面是代码:

代码语言:javascript
复制
n = input()
a = list(map(int, input().split()))
a.sort()
b = list({i for i in a})
while b[0] in a:
    a.remove(b[0]) # removes the smallest value
while b[len(b)-1] in a:
    a.remove(b[len(b)-1]) # removes the largest value
print(len(a))

它通过了9项测试,但第10次测试的答案却是错误的。下面是包含错误的判断协议:https://codeforces.com/contest/768/submission/162852310

有人能解释一下我的代码的问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-05 07:29:29

尝试从列表中删除最小和最大的值。要获得这些值,您可以根据从list a创建的集合创建一个新的list b,并使用b中的第一个和最后一个元素。

问题是集合是无序的,因此结果列表也是无序的。这意味着,如果从b[0]中删除a,这可能不是最小的值。结果在不同的机器或平台上可能有所不同,但是下面是我的机器上的一个例子:print(list({i for i in [2, 2, 3, 4, 1500, 1500]}))给出了[1500, 2, 3, 4]

如果你对b排序,那么一切都会好起来的。

代码语言:javascript
复制
n = input()
a = list(map(int, input().split()))
a.sort()
b = sorted({i for i in a})
while b[0] in a:
    a.remove(b[0]) # removes the smallest value
while b[-1] in a:
    a.remove(b[-1]) # removes the largest value
print(len(a))

但是您甚至不需要创建第二个列表b,因为您可以从已经排序的列表a中获得最小和最大的值。

代码语言:javascript
复制
a = list(map(int, input().split()))
a.sort()
min_value, max_value = a[0], a[-1]
while min_value in a:
    a.remove(min_value)
while max_value in a:
    a.remove(max_value)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72865083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档