programmation Java (école d'ingénieur) · Chapitre 5 · Exercice de TD
Supprimer les doublons
Tableaux · niveau 2
Énoncé
Écrire static int[] sansDoublons(int[] t) qui reçoit un tableau trié et retourne un nouveau tableau contenant chaque valeur une seule fois : {1, 1, 2, 3, 3, 3, 7} donne {1, 2, 3, 7}. Pourquoi l'hypothèse « trié » simplifie-t-elle le problème ? Comment obtenir un tableau de la bonne longueur ?
Corrigé
Dans un tableau trié, les valeurs égales sont voisines : une valeur est nouvelle si et seulement si elle diffère de la précédente. On la recopie alors dans un tableau de travail, de même longueur que t, puis on retourne une copie de la bonne longueur.
static int[] sansDoublons(int[] t) { // t trié
if (t.length == 0) return t;
int[] r = new int[t.length];
int k = 0; // nombre de valeurs déjà gardées
r[k++] = t[0];
for (int i = 1; i < t.length; i++) {
if (t[i] != t[i - 1]) r[k++] = t[i];
}
return Arrays.copyOf(r, k);
}
Résultat : [1, 2, 3, 7]. Sans l'hypothèse « trié », il faudrait, pour chaque valeur, la chercher parmi celles déjà gardées : un travail de l'ordre de au lieu de .
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.