Maison >interface Web >js tutoriel >Programme JavaScript pour trouver le sous-tableau avec la plus petite moyenne
Nous allons écrire un programme pour trouver le sous-tableau avec la plus petite moyenne. Pour ce faire, nous allons parcourir le tableau et garder une trace du sous-tableau actuel et de sa somme. Pour chaque élément, nous calculerons la moyenne du sous-tableau actuel et la comparerons à la plus petite moyenne que nous ayons vue jusqu'à présent. S'il est inférieur, nous mettons à jour la moyenne minimale du sous-tableau ainsi que les indices de début et de fin. A la fin de l'itération, nous renvoyons le sous-tableau avec la plus petite moyenne.
Pour trouver le sous-tableau avec la plus petite moyenne, nous pouvons suivre ces étapes -
Initialise deux variables, start et end, pour garder une trace de l'index de début et de fin du sous-tableau.
Utilisez for pour parcourir le tableau, en gardant une trace de la somme actuelle et de la plus petite moyenne trouvée jusqu'à présent.
À chaque itération, comparez la somme actuelle à la moyenne minimale, et si un nouveau minimum est trouvé, mettez à jour les variables Start et End.
Si la somme actuelle est supérieure à la moyenne minimale, avancez l'indice de départ jusqu'à ce que la somme soit inférieure à la moyenne minimale.
Répétez les étapes 2 à 4 jusqu'à ce que vous atteigniez la fin du tableau.
Le sous-tableau avec la plus petite moyenne est le sous-tableau commençant à start et se terminant à end.
Étant donné un tableau d'entiers, trouvez le sous-tableau avec la plus petite moyenne.
Voici un exemple JavaScript complet et fonctionnel pour résoudre ce problème -
function findsmallestAverageSubarray(arr, k) { let minAvg = Number.POSITIVE_INFINITY; let minAvgStart = 0; let windowSum = 0; for (let i = 0; i < arr.length - k + 1; i++) { if (i === 0) { for (let j = 0; j < k; j++) { windowSum += arr[j]; } } else { windowSum -= arr[i - 1]; windowSum += arr[i + k - 1]; } let windowAvg = windowSum / k; if (windowAvg < minAvg) { minAvg = windowAvg; minAvgStart = i; } } return arr.slice(minAvgStart, minAvgStart + k); } const arr = [1, 3, 6, -3, -4, 2, 5]; const k = 4; console.log(findsmallestAverageSubarray(arr, k));
findSmallestAverageSubarray prend en entrée un tableau d'entiers arr et un entier k, où k est le sous-tableau.
renvoie le sous-tableau avec la plus petite moyenne.
minAvgLa variable est initialisée avec la plus grande valeur possible d'un nombre à virgule flottante.
minAvgStart est utilisée pour stocker l'index de départ du sous-tableau avec la plus petite moyenne.
windowSum est utilisée pour stocker la somme des éléments dans le sous-tableau actuel.
Boucle extérieurefor (let i = 0; i pour itérer la longueur k dans le tableau donné arr.
La boucle internefor (let j = 0; j est utilisée pour calculer la somme des éléments du sous-tableau actuel.
if (i === 0) est utilisé pour calculer la somme des éléments du premier sous-tableau.
else est utilisé pour calculer la somme des éléments dans les sous-tableaux restants. Il soustrait le premier élément du sous-tableau précédent et ajoute le dernier élément du sous-tableau actuel.
windowAvg est utilisée pour stocker la valeur moyenne du sous-tableau actuel.
if (windowAvg est utilisé pour mettre à jour la moyenne minimale et l'index de départ du sous-tableau avec la moyenne minimale.
Enfin, la fonction renvoie le sous-tableau avec la plus petite moyenne.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!