Recherche de la dernière occurrence
Exercice · informatique (tronc commun des prépas scientifiques), chapitre 2 — Recherche séquentielle et dictionnaires
Énoncé
Écrire une fonction derniere_occurrence(v, t) qui renvoie le plus grand indice tel que t[i] == v (ou None), en un seul parcours. Fournir son invariant et sa complexité.
Corrigé
def derniere_occurrence(v, t: list):
pos = None
for i in range(len(t)):
# Invariant : pos est le plus grand indice j < i tel que t[j] == v,
# ou None si v n'apparaît pas dans t[0..i-1]
if t[i] == v:
pos = i
# Fin de l'invariant pour l'étape i
return pos
La complexité dans le cas le pire est puisqu'on parcourt toujours l'intégralité du tableau. On ne peut pas interrompre la boucle prématurément (contrairement à la première occurrence) car une autre occurrence de peut toujours se situer plus loin.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.