Exercices Java : tableaux, chaînes et collections10
Commencez par un calcul, puis observez comment le problème modifie l’état à conserver. Chaque exercice principal présente une solution Java complète, ses conditions d’entrée et le raisonnement qui justifie l’algorithme.
Tableaux et limites numériques
Appliquez les signes et faites correspondre les indices avant de choisir int ou long. Poursuivez avec une suite dont les produits dépassent int.
- Additionner des valeurs signées en Java avec IntStream
Combinez les valeurs absolues et les signes booléens correspondants avec IntStream. Vérifiez l’annulation, les entrées toutes négatives, les limites de int et le contrat de longueurs égales.
- Produit scalaire de tableaux Java : IntStream et limites des entiers
Multipliez les éléments correspondants de deux tableaux puis additionnez-les avec IntStream. Comprenez les signes, les limites de int et la conversion des opérandes avant un débordement.
- Suite de pas x en Java : élargir le type avant la multiplication
Construire n valeurs de x à x*n avec IntStream. Pourquoi mapToLong seul ne prévient pas le dépassement de int, avec des pas positifs, négatifs et nuls.
Chaînes et ordre des transformations
Utilisez un remplacement littéral pour les mots désignant des chiffres, préservez l’ordre de normalisation, puis supprimez les paires de caractères identiques adjacents avec une pile.
- Convertir des mots de chiffres anglais avec String.replace en Java
Normaliser par remplacement littéral les mélanges valides de chiffres et de mots de zero à nine. Distinguer replace de replaceAll et préciser les limites des entiers et le périmètre.
- Nouvel identifiant en Java : ordre de normalisation et troncature
Implémenter la normalisation avec une chaîne Optional et une boucle : points consécutifs, résultat vide après filtrage, nettoyage après troncature, remplissage et indépendance de la locale.
- Supprimer les paires identiques adjacentes en Java avec ArrayDeque
Réduire les paires de caractères identiques adjacents avec une pile. Invariant du préfixe, suppressions en cascade, limites au million de caractères et coûts en temps et espace.
Comptages, état et ordre
Distinguez la fréquence des noms du nombre de types distincts. Suivez ensuite la récence des accès au cache et classez des rapports avec une règle explicite en cas d’égalité.
- Trouver le coureur manquant en Java avec les fréquences de noms
Soustraire les fréquences des arrivants de celles des participants avec HashMap. Gérer les homonymes sans différence de Set et préciser la garantie d’un seul coureur manquant.
- Java Ponketmon : pourquoi la réponse est min(types distincts, N/2)
Compter les types distincts avec HashSet et prouver que la borne de sélection est atteignable. Distinguer le nombre maximal de types de la construction d’une sélection concrète.
- Cache LRU en Java : l’ordre d’accès de LinkedHashMap
Simuler un cache LRU avec LinkedHashMap ordonné par accès : rafraîchissement des succès, éviction, clés sans distinction de casse, capacité nulle et hypothèses de coût.
- Trier les taux d’échec en Java : dénominateurs, égalités et produits long
Compter les joueurs arrêtés et arrivés, comparer les taux exacts par produits croisés long et gérer les étapes inatteintes, la réussite complète et les égalités.