Introduction
Dans ce laboratoire, nous allons explorer la programmation JavaScript en effectuant une série d'exercices conçus pour aider à développer les compétences fondamentales. Du syntaxe de base et des types de données aux concepts plus avancés tels que la programmation asynchrone et la programmation fonctionnelle, ce laboratoire vous procurera une expérience pratique qui vous aidera à devenir un développeur JavaScript compétent. Que vous soyez nouveau en programmation ou que vous cherchiez à étendre vos compétences, ce laboratoire vous fournira les outils dont vous avez besoin pour réussir.
Algorithme du plus grand sous-tableau
Pour pratiquer la programmation, ouvrez le Terminal/SSH et tapez node. Cet algorithme trouve un sous-tableau contigu avec la plus grande somme dans un tableau de nombres. Pour implémenter cet algorithme, suivez ces étapes :
- Utilisez une approche gourmande pour suivre la somme actuelle et la somme maximale actuelle,
maxSum. InitialisezmaxSumà-Infinitypour vous assurer que la plus haute valeur négative est renvoyée si toutes les valeurs sont négatives. - Définissez des variables pour suivre l'index de début maximal,
sMax, l'index de fin maximal,eMaxet l'index de début actuel,s. - Utilisez
Array.prototype.forEach()pour itérer sur les valeurs et ajoutez la valeur actuelle à lasum. - Si la somme actuelle est supérieure à
maxSum, mettez à jour les valeurs d'index et lamaxSum. - Si la
sumest inférieure à0, réinitialisez-la à0et mettez à jour la valeur desavec l'index suivant. - Utilisez
Array.prototype.slice()pour renvoyer le sous-tableau indiqué par les variables d'index.
Voici le code JavaScript pour l'algorithme :
const maxSubarray = (...arr) => {
let maxSum = -Infinity,
sum = 0;
let sMax = 0,
eMax = arr.length - 1,
s = 0;
arr.forEach((n, i) => {
sum += n;
if (maxSum < sum) {
maxSum = sum;
sMax = s;
eMax = i;
}
if (sum < 0) {
sum = 0;
s = i + 1;
}
});
return arr.slice(sMax, eMax + 1);
};
Voici un exemple d'utilisation de la fonction :
maxSubarray(-2, 1, -3, 4, -1, 2, 1, -5, 4); // [4, -1, 2, 1]
Sommaire
Félicitations ! Vous avez terminé le laboratoire du plus grand sous-tableau. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.