python代码没有通过hackerrank上的隐藏测试用例[已关闭]

siv3szwd  于 2023-04-10  发布在  Python
关注(0)|答案(1)|浏览(151)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
12小时前关闭。
Improve this question
以下是一个问题:Asad在Alpha公司工作。该公司根据不同的参数给员工打分。可以有一个或多个员工得分相同。该公司有两个顶级称号。第一级老板是所有得分最高的员工。第二级老板是所有得分第二高的员工。每个级别的老板都必须完成不同的任务。
分数的变化非常频繁;因此,如果有任何变化,他们必须确定一级和二级老板。你是一个高级软件开发人员,你的任务是提供第二高的评分值。
在第一个样本测试用例中,有四名员工的得分为1、2、2和-4。第二高的是1,因为公司中有两名一级员工的得分为2。
在最后一个样本测试用例中,两个员工都有8分,并且都是一级员工,因此答案为NO。
输入
输入的第一行包含整数n(1 ≤ n ≤ 100)-序列中的数字数量。第二行包含n个空格分隔的整数-序列的元素。这些数字的绝对值不超过100。
输出
如果给定序列具有二阶统计量,则输出该阶统计量,否则输出NO。
输入格式
测试用例1:
4
一二三四
测试用例2:
6
一二三四一一零二
测试用例3:
八八
制约因素
无约束
输出格式
测试用例输出1:
1
测试用例输出2:
2
测试用例输出3:

import sys
s = sys.stdin.read()
s=list(map(int, s.split()))
count=0
a=list(map(int, s[1:]))
        
for i in range(len(a)-1):
    if a[i]!=a[i+1]:
        count=count+1
if count==0:
    print('NO')
else:
    M=0
    S=0
    cs=0
    for i in range(len(a)):
        for j in range(len(a)-1): 
           if a[j]>a[j+1]:
            a[j],a[j+1]=a[j+1],a[j]
        if i==len(a)-1:
            M=a[i]
    for i in range(len(a)):
        if a[i]==M:
            print(cs+1)
            break
        if i==0:
            S=a[i]
        else:
            if a[i]>S:
                S=a[i]
                cs=0
            elif a[i]==S:
              cs=cs+1

我写了如下代码,并尝试了许多自定义输入,但当我提交它时,我得到了一些错误的情况,我会做错什么?

wydwbb8l

wydwbb8l1#

  • 输入格式不正确。输入包含多个测试用例,但代码正在一次阅读所有测试用例。您应该分别读取每个测试用例并逐个处理。
  • 代码是在每次迭代中对数组进行排序,效率很低,你只需要在数组中找到最大值和第二大值的分数,这可以在一次遍历中完成。
  • 代码没有正确处理没有第二高分数的情况。在这种情况下,它应该打印“NO”,但代码打印“-1”。
import sys

# read input from standard input
input_str = sys.stdin.read()
input_list = input_str.strip().split('\n')

# process each test case
for i in range(1, len(input_list), 2):
    n = int(input_list[i])
    a = list(map(int, input_list[i+1].split()))

    # find the maximum and second maximum scores
    max_score = float('-inf')
    second_max_score = float('-inf')
    for score in a:
        if score > max_score:
            second_max_score = max_score
            max_score = score
        elif score > second_max_score and score != max_score:
            second_max_score = score

    # output the second maximum score or "NO"
    if second_max_score == float('-inf'):
        print("NO")
    else:
        print(second_max_score)

相关问题