Je joue avec un problème à https://www.hackerrank.com/challenges/angry-children. J'ai écrit une solution qui résout correctement certains cas de test. D'autres cas de test, des cas qui fournissent beaucoup plus d'entrées, expirent. Comment puis-je changer ce code pour le traiter plus rapidement?Plus efficace Python 3
N = int(input())
K = int(input())
D = K - 1
N_set = []
for n in range(N):
N_set.append(int(input()))
N_set.sort(reverse=True)
#Find differences between each integer in the list
D_set = []
for d in range(0,N-1):
D_set.append(N_set[d]-N_set[d+1])
D_Start = 0
D_End = D
min_summed_diff = 99999999999999
D_Start_Hold = None
D_End_Hold = None
count_down = len(D_set) - D + 1
while count_down:
#print(count_down)
temp_summed_diff = 0
for i in range(D_Start, D_End):
temp_summed_diff += D_set[i]
if temp_summed_diff < min_summed_diff:
min_summed_diff = temp_summed_diff
D_Start_Hold = D_Start
D_End_Hold = D_End
D_Start += 1
D_End += 1
count_down -= 1
K_set = N_set[D_Start_Hold:D_End_Hold+1]
unfairness = max(K_set) - min(K_set)
print(unfairness)
exécuter sous 'cProfile' et voir ce qui dépasse? – Kevin