Somme maximale de k termes consécutifs⚓︎
Écrire une fonction telle que somme_maxi(valeurs, k)
renvoie la somme maximale de k
termes consécutifs dans une liste de valeurs
.
On garantit que
valeurs
est de taille au moins égale àk
et quek > 0
.
Example
>>> somme_maxi([0, 1, 2, 3, 2, 1, 0], 3)
7
>>> somme_maxi([0, 1, 2, 3, 2, 1, 0], 1)
3
def sommepy-undmaxi(valeurs, k):bksl-nl ...bksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert sommepy-undmaxi([0, 1, 2, 3, 2, 1, 0], 3) == 7bksl-nlassert sommepy-undmaxi([0, 1, 2, 3, 2, 1, 0], 1) == 3bksl-nlbksl-nldef sommepy-undmaxi(valeurs, k):bksl-nl kpy-undsomme = 0bksl-nl for i in range(k):bksl-nl kpy-undsomme += valeurs[i]bksl-nl maxi = kpy-undsommebksl-nl for i in range(k, len(valeurs)):bksl-nl kpy-undsomme += valeurs[i] - valeurs[i - k]bksl-nl if kpy-undsomme > maxi:bksl-nl maxi = kpy-undsommebksl-nl return maxibksl-nlbksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert sommepy-undmaxi([0, 1, 2, 3, 2, 1, 0], 3) == 7bksl-nlassert sommepy-undmaxi([0, 1, 2, 3, 2, 1, 0], 1) == 3bksl-nlbksl-nl
A
Z
Indice 1
On pourra commencer par faire le cumul des k
premières valeurs pour initialiser une variable maxi
.
On pourra ensuite faire une boucle qui ajoute la valeur suivante et retranche la première valeur.
Indice 2
On pourra s'aider du code à trou
def somme_maxi(valeurs, k):
k_somme = ...
for i in range(k):
k_somme += ...
maxi = k_somme
for i in range(..., ...):
k_somme += valeurs[...] - valeurs[...]
if k_somme > maxi:
maxi = ...
return ...