Nombre de 1
Nombre de 1⚓︎
On considère un tableau vide ou ne contenant que des 0 et des 1. Ce tableau est trié dans l'ordre croissant et il est possible qu'il ne contienne que des 0 ou que des 1. Combien compte-t-il de 1 ?
Écrire la fonction compte_uns
qui prend en paramètre un tel tableau et renvoie le nombre de 1 qu'il contient.
Attention
Certains des tableaux utilisés dans les tests sont très grands. Une méthode avec un coût linéaire sera inefficace face à ceux-ci.
On limite donc le nombre de lectures dans chaque tableau à 500. Passé cette valeur maximale, tout nouvel accès provoquera une erreur.
On rappelle à ce titre que le tableau est trié...
Exemples
Exercice 1
Compléter le script ci-dessous :
ENCRYPTION_TOKEN
Solution & Remarques
Remarques :
Le premier test permet de traiter le cas des tableaux vides. Le second celui des tableaux ne contenant que des1
. On renvoie alors directement la longueur du tableau. Ce cas pourrait être traité par la boucle principale mais ce test initial permet d'optimiser le code.
Le tableau peut être partagé en deux zones (éventuellement vides) : une zone ne contenant que des 0
, une autre ne contenant que des 1
.
On utilise une recherche dichotomique afin de trouver la position du premier 1
, limite entre ces deux zones. Il s'agit de l'unique 1
précédé par un 0
. Une fois trouvé on renvoie le nombre de 1
.
Si l'on quitte la boucle sans avoir renvoyé de résultat c'est que le tableau ne contenait aucun 1
. On peut renvoyer 0
.
ENCRYPTION_TOKEN
Crédits⚓︎
Un exercice de Nicolas Revéret
# Tests
(insensible à la casse)(Ctrl+I)