Find then compare Flashcards
(7 cards)
Dans quel type de problème utilise-t-on le pattern “Find then Compare” ?
Quand on doit déterminer, pour chaque élément d’une séquence, si lui-même augmenté d’une même constante peut atteindre ou dépasser la valeur maximale de cette séquence au départ
Quelle est la première étape de ce pattern ?
Faire une première passe pour trouver la valeur de référence (ici maxCandies = max(candies)) en O(n)
Comment procède-t-on ensuite pour chaque élément ?
Pour chaque indice i, on calcule candies[i] + extraCandies et on vérifie si ce total est ≥ la référence maxCandies
Comment nomme-t-on ce pattern en deux passes ?
On l’appelle souvent “Find then Compare” ou “Threshold Check” : on trouve d’abord un seuil global, puis on compare chaque entrée à ce seuil
Quelle est la complexité en temps et en espace de ce pattern ?
Temps : O(n) (deux parcours linéaires de la liste)
Espace : O(n) pour la liste de résultats (ou O(1) espace auxiliaire si on modifie une liste existante)
Peut-on écrire cette solution en une seule expression Python ?
Oui, en combinant max() et une compréhension de liste :
max_c = max(candies)
result = [(c + extraCandies) >= max_c for c in candies]
Cela reste O(n) temps et O(n) espace
Quels cas particuliers faut-il toujours couvrir ?
Liste vide → retourner []
extraCandies négatif ou très grand → la comparaison reste valide
Tous les éléments identiques → tous True si extraCandies ≥ 0