Maison  >  Article  >  interface Web  >  Programme JavaScript pour trouver le plus petit nombre manquant

Programme JavaScript pour trouver le plus petit nombre manquant

PHPz
PHPzavant
2023-09-01 15:29:071188parcourir

用于查找最小缺失数字的 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>

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>

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>

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>

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer