python 代码没有通过 hackerrank 上的隐藏测试用例

问题描述 投票:0回答:1

下面是一个问题: 阿萨德在阿尔法公司工作。公司根据不同的参数给员工打分。同一分数上可以有一名或多名员工。该公司拥有两个顶级称号。第一级老板是所有得分最高的员工。第二级老板是得分第二高的所有员工。每个级别的老板都必须执行一组不同的任务。

分数变化非常频繁;因此,如果有任何变化,他们必须确定一级和二级老板。你是一名高级软件开发人员,你的任务是提供第二高的分值。

在第一个样本测试用例中,有四名员工的分数分别为 1、2、2 和 -4。第二高的是1,因为公司有两个一级员工,分数是2。

最后一个样本测试用例中,两个员工都是8分,都是一级员工。所以,答案是否定的

输入

第一行输入包含整数 n (1 ≤ n ≤ 100) — 序列中数字的数量。第二行包含 n 个以空格分隔的整数——序列的元素。这些数字的绝对值不超过 100。

输出

如果给定序列有二阶统计量,则输出该阶统计量,否则输出NO.

输入格式

测试案例1:

4

1 2 2 -4

测试案例2:

6

1 2 3 1 1 0 2

测试案例3:

8 8

约束

无限制

输出格式

测试用例输出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





your text
我已经编写了如下代码并针对许多自定义输入进行了尝试但是当我提交它时我遇到了一些错误,我可能做错了什么?

python python-3.x logic
1个回答
0
投票
  • 输入格式不正确。输入包含多个测试用例,但代码一次读取所有测试用例。您应该分别阅读每个测试用例并逐一处理。

  • 代码在每次迭代中都对数组进行排序,效率很低。你只需要找到数组中的最大和第二大分数,这可以在一次通过中完成。

  • 代码没有正确处理没有第二高分的情况。在这种情况下,它应该打印“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)

© www.soinside.com 2019 - 2024. All rights reserved.