Heim > Web-Frontend > js-Tutorial > Hauptteil

JavaScript-Programm zum Finden der kleinsten fehlenden Zahl

PHPz
Freigeben: 2023-09-01 15:29:07
nach vorne
1166 Leute haben es durchsucht

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

Wir erhalten ein sortiertes Array verschiedener nichtnegativer Ganzzahlen, hier müssen wir die kleinste fehlende Zahl finden. Daher werden wir in diesem Tutorial verschiedene Möglichkeiten zur Lösung dieses Problems untersuchen und seine zeitliche Komplexität anhand verschiedener Beispiele diskutieren.

Das Problem verstehen

Die Problembeschreibung ist sehr einfach. Bei einem sortierten Array verschiedener nicht negativer Ganzzahlen müssen wir die kleinste fehlende Zahl darin finden. Nehmen wir ein Beispiel, um dieses Problem zu verstehen.

Beispiel

Angenommen, wir haben ein Array [1, 2, 4, 5, 6]. Hier können wir sehen, dass zwischen den Zahlen 2 und 4 in diesem Array ein Leerzeichen steht. Diese Diskrepanz weist darauf hin, dass eine Zahl fehlt. Jetzt müssen wir die kleinste Zahl finden, die zur Position passt.

Um festzustellen, ob eine Zahl fehlt, müssen wir zunächst prüfen, ob das Array die Zahl 3 enthält. Wenn die Zahl 3 nicht im Array vorhanden ist, können wir sagen, dass es sich um eine fehlende Zahl handelt, da die Zahl 3 nicht im Array enthalten ist.

Schauen wir uns nun einige Möglichkeiten zur Lösung dieses Problems an.

Methode 1: Naive Methode

Eine der einfachsten Möglichkeiten, dieses Problem zu lösen, besteht darin, das Array zu durchlaufen und sicherzustellen, dass sich jedes Element an der richtigen Position befindet. Wenn das Element nicht an der richtigen Position ist, ermitteln wir die Mindestanzahl fehlender Elemente.

Beispiel

Dies ist der oben erläuterte Code -

<!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>
Nach dem Login kopieren

Da wir das gesamte Array durchlaufen, beträgt die zeitliche Komplexität dieser Methode O(n).

Diese Lösung ist jedoch ineffizient, da sie die Tatsache, dass wir ein sortiertes Array erhalten, nicht ausnutzt.

Methode 2: Binäre Suchmethode

Hier verwenden wir die binäre Suchmethode, um dieses Problem effizienter zu lösen. Bei dieser Methode führen wir eine binäre Suche nach dem ersten Element durch, das nicht im Array vorhanden ist. Der Code für diese Methode lautet -

Beispiel

<!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>
Nach dem Login kopieren

Da wir eine binäre Suche durchführen, beträgt die zeitliche Komplexität der obigen Methode O(log n).

Diese Methode ist effizienter als unsere einfache Methode, da sie die Tatsache ausnutzt, dass das Array sortiert ist.

Methode 3: Lineare Suchmethode

Die dritte Methode, die wir besprechen werden, ist die lineare Suchmethode. Diese Methode basiert auf der Tatsache, dass das Array sortiert ist, wodurch wir eine lineare Suche anwenden können, um fehlende Zahlen zu identifizieren.

Die lineare Suchmethode funktioniert, indem sie über das Array iteriert und jedes Mitglied mit seinem Index vergleicht. Wenn der Index eines Elements nicht seinem Wert entspricht, befindet sich das fehlende Element an einer anderen Stelle im Array vor diesem Element. Wir geben den Index des fehlenden Elements zurück.

Beispiel

Der Code der linearen Suchmethode lautet wie folgt -

<!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>
Nach dem Login kopieren

Die zeitliche Komplexität dieser Methode beträgt O(n), da wir über das gesamte Array iterieren müssen.

Diese Methode ist weniger effizient als die binäre Suchmethode, eignet sich jedoch für kleine Arrays.

Methode 4: Verbesserte binäre Suche

Die vierte Methode, die wir besprechen werden, ist die verbesserte binäre Suchmethode. Diese Methode ist der binären Suchmethode sehr ähnlich, außer dass wir das mittlere Element nicht mit der fehlenden Ganzzahl, sondern mit seinem Index vergleichen.

Die Grundidee der modifizierten binären Suchmethode besteht darin, das Array bei jedem Schritt in zwei Hälften zu teilen und das mittlere Element mit seinem Index zu vergleichen. Wenn das mittlere Element größer als sein Index ist, muss sich das fehlende Mitglied in der linken Hälfte des Arrays befinden. Wenn das mittlere Element kleiner oder gleich seinem Index ist, muss sich das fehlende Element in der rechten Hälfte des Arrays befinden.

Beispiel

Dies ist die Code-Implementierung der modifizierten binären Suchmethode -

<!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>
Nach dem Login kopieren

Die zeitliche Komplexität dieser Methode beträgt ebenfalls O (log n), was der binären Suchmethode entspricht.

Diese Methode ist effizienter als die lineare Suchmethode und erfordert das Sortieren des Arrays.

Fazit

In diesem Blog haben wir vier Methoden besprochen, um die kleinste fehlende Zahl in einem Array zu finden. Dies sind die naive Methode, die binäre Suchmethode, die lineare Suchmethode und die modifizierte binäre Suchmethode.

Das obige ist der detaillierte Inhalt vonJavaScript-Programm zum Finden der kleinsten fehlenden Zahl. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!