OCaml (option informatique) · Chapitre 8 · Exercice de TD
Premier doublon
Piles, files et tables de hachage · niveau 2
Énoncé
Écrire premier_doublon l qui renvoie Some x où x est le premier élément de la liste l déjà rencontré auparavant, ou None si tous sont distincts.
Corrigé
let premier_doublon l =
let vus = Hashtbl.create 16 in
let rec parcours l =
match l with
| [] -> None
| x :: reste ->
if Hashtbl.mem vus x then Some x
else begin
Hashtbl.add vus x true;
parcours reste
end
in
parcours l
La table vus joue le rôle d'un ensemble : on y note chaque élément déjà vu (la valeur true importe peu, seule compte la présence de la clé). Dès qu'un élément est déjà présent, c'est le premier doublon. Coût en moyenne, contre avec une recherche par liste.
Exercices semblables
- Parenthésage équilibré corrigé
- Renverser avec une pile corrigé
- Compter les occurrences corrigé
- Mémoïsation de Fibonacci corrigé
- Évaluer une expression postfixe corrigé