Maison > interface Web > js tutoriel > Programme JavaScript pour trouver le sous-tableau avec la plus petite moyenne

Programme JavaScript pour trouver le sous-tableau avec la plus petite moyenne

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2023-08-23 23:33:13
avant
1126 Les gens l'ont consulté

JavaScript 程序查找平均值最小的子数组

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.

Méthode

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.

Exemple

É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));
Copier après la connexion

Instructions

    La fonction
  • findSmallestAverageSubarray prend en entrée un tableau d'entiers arr et un entier k, où k est le sous-tableau.

  • La fonction
  • 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.

  • La variable
  • minAvgStart est utilisée pour stocker l'index de départ du sous-tableau avec la plus petite moyenne.

  • La variable
  • 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.

  • Le bloc
  • if (i === 0) est utilisé pour calculer la somme des éléments du premier sous-tableau.

  • Le bloc
  • 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.

  • La variable
  • windowAvg est utilisée pour stocker la valeur moyenne du sous-tableau actuel.

  • Le bloc
  • 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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal