Table des matières
Comprendre le problème
Exemple
Méthode 1 : Méthode naïve
Méthode 2 : Méthode de recherche binaire
Méthode 3 : Méthode de recherche linéaire
Méthode 4 : Recherche binaire améliorée
Conclusion
Maison interface Web js tutoriel Programme JavaScript pour trouver le plus petit nombre manquant

Programme JavaScript pour trouver le plus petit nombre manquant

Sep 01, 2023 pm 03:29 PM

用于查找最小缺失数字的 JavaScript 程序

Nous obtenons un tableau trié de différents entiers non négatifs, ici nous devons trouver le plus petit nombre manquant. Par conséquent, dans ce didacticiel, nous explorerons différentes manières de résoudre ce problème et discuterons de sa complexité temporelle avec divers exemples.

Comprendre le problème

La description du problème est très simple. Étant donné un tableau trié de différents entiers non négatifs, nous devons y trouver le plus petit nombre manquant. Prenons un exemple pour comprendre ce problème.

Exemple

Supposons que nous ayons un tableau [1, 2, 4, 5, 6]. Ici, nous pouvons voir qu'il y a un espace entre les nombres 2 et 4 dans ce tableau. Cet écart indique qu'il manque un numéro. Nous devons maintenant trouver le plus petit nombre correspondant à la position.

Pour déterminer s'il manque un nombre, nous devons d'abord voir si le tableau contient le nombre 3. Si le nombre 3 n'existe pas dans le tableau, on peut dire que c'est un nombre manquant car le nombre 3 n'est pas contenu dans le tableau.

Voyons maintenant quelques façons de résoudre ce problème.

Méthode 1 : Méthode naïve

L'un des moyens les plus simples de résoudre ce problème consiste à parcourir le tableau et à s'assurer que chaque élément est dans la bonne position. Si l'élément n'est pas dans la bonne position, on retrouve le nombre minimum d'éléments manquants.

Exemple

C'est le code expliqué ci-dessus -

<!DOCTYPE html>
<html>
<body>
   <h2>Find Smallest Missing Number</h2>
   <p>Array: [0, 1, 2, 3, 5, 6]</p>
   <p>Result: <span id="result"></span></p>
   <script>
      function findSmallestMissingNumber(arr) {
         let n = arr.length;
         for (let i = 0; i < n; i++) {
            if (arr[i] !== i) {
               return i;
            }
         }
         return n;
      }
      const arr = [0, 1, 2, 3, 5, 6];
      const result = findSmallestMissingNumber(arr);
      document.getElementById("result").innerHTML = result;
   </script>
</body>
</html>
Copier après la connexion

Puisque nous parcourons l'ensemble du tableau, la complexité temporelle de cette méthode est O(n).

Cependant, cette solution est inefficace car elle ne profite pas du fait que nous recevons un tableau trié.

Méthode 2 : Méthode de recherche binaire

Ici, nous utiliserons la méthode de recherche binaire pour résoudre ce problème plus efficacement. Dans cette méthode, nous effectuons une recherche binaire du premier élément qui n'est pas présent dans le tableau. Le code de cette méthode est -

Exemple

<!DOCTYPE html>
<html>
<body>
   <div id="result"></div>
   <script>
      function findSmallestMissingNumber(arr) {
         let n = arr.length;
         let low = 0;
         let high = n - 1;
         let mid = 0;
         while (high - low > 1) {
            mid = Math.floor((low + high) / 2);
            if (arr[mid] - mid !== arr[low] - low) {
               high = mid;
            } else if (arr[mid] - mid !== arr[high] - high) {
               low = mid;
            }
         }
         return arr[low] + 1;
      }
      const arr = [0, 1, 2, 3, 4, 5, 6, 8];
      const result = findSmallestMissingNumber(arr);
      document.getElementById("result").innerHTML = "Array: " + JSON.stringify(arr) ;
      document.getElementById("result").innerHTML += "<br>The smallest missing number is: " + result;
   </script>
</body>
</html>
Copier après la connexion

Puisque nous effectuons une recherche binaire, la complexité temporelle de la méthode ci-dessus est O(log n).

Cette méthode est plus efficace que notre méthode simple car elle profite du fait que le tableau est trié.

Méthode 3 : Méthode de recherche linéaire

La troisième méthode dont nous discuterons est la méthode de recherche linéaire. Cette méthode repose sur le fait que le tableau est trié, ce qui nous permettra d'appliquer une recherche linéaire pour identifier les nombres manquants.

La méthode de recherche linéaire fonctionne en parcourant le tableau et en comparant chaque membre à son index. Si l'index d'un élément n'est pas égal à sa valeur, l'élément manquant se trouve ailleurs dans le tableau avant cet élément. Nous renvoyons l'index de l'élément manquant.

Exemple

Le code de la méthode de recherche linéaire est le suivant -

<!DOCTYPE html>
<html>
<body>
   <h2>Find Smallest Missing Number</h2>
   <p>Array: [1, 2, 3, 5]</p>
   <p>Result: <span id="result"></span></p>
   <script>
      function findSmallestMissingNumber(arr) {
         for (let i = 0; i < arr.length; i++) {
            if (arr[i] !== i+1) {
               return i+1;
            }
         }
         return arr.length+1;
      }
      const arr = [1, 2, 3, 5];
      const result = findSmallestMissingNumber(arr);
      document.getElementById("result").innerHTML = result;
   </script>
</body>
</html>
Copier après la connexion

La complexité temporelle de cette méthode est O(n) puisque nous devons parcourir l'ensemble du tableau.

Cette méthode est moins efficace que la méthode de recherche binaire, mais est utile pour les petits tableaux.

Méthode 4 : Recherche binaire améliorée

La quatrième méthode dont nous discuterons est la méthode de recherche binaire améliorée. Cette méthode est très similaire à la méthode de recherche binaire, sauf qu'au lieu de comparer l'élément du milieu à l'entier manquant, on le compare à son index.

L'idée de base derrière la méthode de recherche binaire modifiée est de diviser le tableau en deux à chaque étape et de comparer l'élément du milieu avec son index. Si l'élément du milieu est supérieur à son index, le membre manquant doit se trouver dans la moitié gauche du tableau. Si l'élément du milieu est égal ou inférieur à son index, l'élément manquant doit se trouver dans la moitié droite du tableau.

Exemple

Il s'agit de l'implémentation du code de la méthode de recherche binaire modifiée -

<!DOCTYPE html>
<html>
<body>
   <h2>Find Smallest Missing Number</h2>
   <p>Predefined array:</p>
   <pre id="inputArray">

<script> // Define the input array const inputArray = [0, 1, 2, 3, 4, 6, 7, 8]; // Display the input array in the pre tag document.getElementById("inputArray").innerHTML = JSON.stringify(inputArray); function findMissingNumber() { // Call the findSmallestMissingNumber function to get the result const result = findSmallestMissingNumber(inputArray); // Display the result using the innerHTML method document.getElementById("result").innerHTML = `The smallest missing number is: ${result}`; } // Copy the findSmallestMissingNumber function here function findSmallestMissingNumber(arr) { let left = 0; let right = arr.length - 1; while (left <= right) { let mid = Math.floor((left + right) / 2); if (arr[mid] > mid) { right = mid - 1; } else { left = mid + 1; } } return left; } </script>
Copier après la connexion

La complexité temporelle de cette méthode est également O(log n), ce qui est la même que la méthode de recherche binaire.

Cette méthode est plus efficace que la méthode de recherche linéaire et nécessite de trier le tableau.

Conclusion

Dans ce blog, nous avons discuté de quatre méthodes pour trouver le plus petit nombre manquant dans un tableau. Il s'agit de la méthode naïve, de la méthode de recherche binaire, de la méthode de recherche linéaire et de la méthode de recherche binaire modifiée.

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment créer et publier mes propres bibliothèques JavaScript? Comment créer et publier mes propres bibliothèques JavaScript? Mar 18, 2025 pm 03:12 PM

L'article discute de la création, de la publication et du maintien des bibliothèques JavaScript, en se concentrant sur la planification, le développement, les tests, la documentation et les stratégies de promotion.

Comment optimiser le code JavaScript pour les performances dans le navigateur? Comment optimiser le code JavaScript pour les performances dans le navigateur? Mar 18, 2025 pm 03:14 PM

L'article traite des stratégies pour optimiser les performances JavaScript dans les navigateurs, en nous concentrant sur la réduction du temps d'exécution et la minimisation de l'impact sur la vitesse de chargement de la page.

Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Apr 04, 2025 pm 02:42 PM

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Comment déboguer efficacement le code JavaScript à l'aide d'outils de développeur de navigateur? Comment déboguer efficacement le code JavaScript à l'aide d'outils de développeur de navigateur? Mar 18, 2025 pm 03:16 PM

L'article traite du débogage efficace de JavaScript à l'aide d'outils de développeur de navigateur, de se concentrer sur la définition des points d'arrêt, de l'utilisation de la console et d'analyser les performances.

Comment utiliser les cartes source pour déboguer le code JavaScript minifié? Comment utiliser les cartes source pour déboguer le code JavaScript minifié? Mar 18, 2025 pm 03:17 PM

L'article explique comment utiliser les cartes source pour déboguer JavaScript minifiée en le mappant au code d'origine. Il discute de l'activation des cartes source, de la définition de points d'arrêt et de l'utilisation d'outils comme Chrome Devtools et WebPack.

Comment utiliser efficacement le cadre de collections de Java? Comment utiliser efficacement le cadre de collections de Java? Mar 13, 2025 pm 12:28 PM

Cet article explore une utilisation efficace du cadre de collections de Java. Il met l'accent sur le choix des collections appropriées (liste, set, map, file d'attente) en fonction de la structure des données, des besoins en performances et de la sécurité des threads. Optimisation de l'utilisation de la collection grâce à

TypeScript pour les débutants, partie 2: Types de données de base TypeScript pour les débutants, partie 2: Types de données de base Mar 19, 2025 am 09:10 AM

Une fois que vous avez maîtrisé le didacticiel TypeScript de niveau d'entrée, vous devriez être en mesure d'écrire votre propre code dans un IDE qui prend en charge TypeScript et de le compiler en JavaScript. Ce tutoriel plongera dans divers types de données dans TypeScript. JavaScript a sept types de données: null, non défini, booléen, numéro, chaîne, symbole (introduit par ES6) et objet. TypeScript définit plus de types sur cette base, et ce tutoriel les couvrira tous en détail. Type de données nuls Comme javascript, null en typeScript

Début avec Chart.js: tarte, beignet et graphiques à bulles Début avec Chart.js: tarte, beignet et graphiques à bulles Mar 15, 2025 am 09:19 AM

Ce tutoriel expliquera comment créer des graphiques à tarte, anneaux et bulles à l'aide de chart.js. Auparavant, nous avons appris quatre types de graphiques de graphique. Créer des graphiques à tarte et à anneaux Les graphiques à tarte et les graphiques d'anneaux sont idéaux pour montrer les proportions d'un tout divisé en différentes parties. Par exemple, un graphique à secteurs peut être utilisé pour montrer le pourcentage de lions mâles, de lions féminins et de jeunes lions dans un safari, ou le pourcentage de votes que différents candidats reçoivent lors des élections. Les graphiques à tarte ne conviennent que pour comparer des paramètres ou des ensembles de données uniques. Il convient de noter que le graphique à tarte ne peut pas dessiner des entités avec une valeur nulle car l'angle du ventilateur dans le graphique à tarte dépend de la taille numérique du point de données. Cela signifie toute entité avec une proportion nulle

See all articles