Find then compare Flashcards

(7 cards)

1
Q

Dans quel type de problème utilise-t-on le pattern “Find then Compare” ?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quelle est la première étape de ce pattern ?

A

Faire une première passe pour trouver la valeur de référence (ici maxCandies = max(candies)) en O(n)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Comment procède-t-on ensuite pour chaque élément ?

A

Pour chaque indice i, on calcule candies[i] + extraCandies et on vérifie si ce total est ≥ la référence maxCandies

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Comment nomme-t-on ce pattern en deux passes ?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quelle est la complexité en temps et en espace de ce pattern ?

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Peut-on écrire cette solution en une seule expression Python ?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Quels cas particuliers faut-il toujours couvrir ?

A

Liste vide → retourner []

extraCandies négatif ou très grand → la comparaison reste valide

Tous les éléments identiques → tous True si extraCandies ≥ 0

How well did you know this?
1
Not at all
2
3
4
5
Perfectly