Это вызов из 10-дневной статистики по Hackerrank. (https://www.hackerrank.com/challenges/s10-interquartile-range/problem?h_r=next-challenge&h_v=zen)
Задача: Задача Межквартильный диапазон массива - это разница между его первым (Q1) и третий (Q3) квартиль (то есть Q3 - Q1).
Учитывая массив X из n целых чисел и массив F, представляющий соответствующие частоты элементов X, построить набор данных S, где каждый xi происходит на частоте fi. Затем вычислите и распечатайте межквартильный диапазон S, округленный до 1 десятичного знака (т. Е. В формате 12,3).
Ниже приведен мой код.
n = int(input())
x = list(map(int, input().split()))
f = list(map(int, input().split()))
s = []
for i in range(len(x)):
j = f[i]
for k in range(j):
s.append(x[i])
n = len(s)
s.sort()
if n%2 == 0:
Q21 = s[n//2]
Q22 = s[n//2 - 1]
Q2 = (Q21 + Q22) / 2
else:
Q2 = s[n//2]
LH = s[:n//2]
if n%2==0:
UH = s[n//2:]
else:
UH = s[n//2+1:]
Q1_len = len(LH)
Q3_len = len(UH)
if Q1_len%2 == 0:
Q11 = LH[Q1_len//2]
Q12 = LH[Q1_len//2 - 1]
Q1 = (Q11 + Q12) / 2
else:
Q1 = LH[Q1_len//2]
if Q3_len%2 == 0:
Q31 = UH[Q3_len//2]
Q32 = UH[Q3_len//2 - 1]
Q3 = (Q31 + Q32) / 2
else:
Q3 = UH[Q3_len//2]
print(round(Q3 - Q1,1))
# print(int(Q2))
# print(int(Q3))
Вот пример теста: ввод std.
5
10 40 30 50 20
1 2 3 4 5
Ожидаемый вывод:
30.0
Вывод моего кода:
30.0 # I get this output on my code editor but not on Hackerrank
Может ли кто-нибудь помочь мне в этом, где я ошибаюсь?
Я получаю вывод, что ожидается, но он показывает, как не удалось.