Jadual Kandungan
Memahami masalah
Contoh
Kaedah 1: Kaedah naif
Kaedah 2: Kaedah carian binari
Kaedah 3: Kaedah carian linear
Kaedah 4: Carian Binari Yang Diperbaiki
Kesimpulan
Rumah hujung hadapan web tutorial js Program JavaScript untuk mencari nombor terkecil yang hilang

Program JavaScript untuk mencari nombor terkecil yang hilang

Sep 01, 2023 pm 03:29 PM

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

Kami mendapat tatasusunan diisih integer bukan negatif yang berbeza, di sini kami perlu mencari nombor terkecil yang hilang. Oleh itu, dalam tutorial ini, kami akan meneroka cara yang berbeza untuk menyelesaikan masalah ini dan membincangkan kerumitan masanya dengan pelbagai contoh.

Memahami masalah

Huraian masalah sangat mudah. Memandangkan tatasusunan diisih integer bukan negatif yang berbeza, kita perlu mencari nombor terkecil yang hilang di dalamnya. Mari kita ambil contoh untuk memahami masalah ini.

Contoh

Katakan kita mempunyai tatasusunan [1, 2, 4, 5, 6]. Di sini kita dapat melihat bahawa terdapat ruang antara nombor 2 dan 4 dalam tatasusunan ini. Percanggahan ini menunjukkan bahawa nombor tiada. Sekarang kita perlu mencari nombor terkecil yang sesuai dengan kedudukan.

Untuk menentukan sama ada nombor tiada, pertama sekali kita perlu melihat sama ada tatasusunan mengandungi nombor 3. Jika nombor 3 tidak wujud dalam tatasusunan, kita boleh mengatakan bahawa ia adalah nombor yang hilang kerana nombor 3 tidak terkandung dalam tatasusunan.

Sekarang mari kita lihat beberapa cara untuk menyelesaikan masalah ini.

Kaedah 1: Kaedah naif

Salah satu cara paling mudah untuk menyelesaikan masalah ini ialah dengan mengulang tatasusunan dan pastikan setiap item berada dalam kedudukan yang betul. Jika elemen tidak berada dalam kedudukan yang betul, kita dapati bilangan minimum elemen yang hilang.

Contoh

Ini adalah kod yang dijelaskan di atas -

<!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>
Salin selepas log masuk

Memandangkan kita menggelung seluruh tatasusunan, kerumitan masa kaedah ini ialah O(n).

Walau bagaimanapun, penyelesaian ini tidak cekap kerana ia tidak mengambil kesempatan daripada fakta bahawa kami diberi tatasusunan yang disusun.

Kaedah 2: Kaedah carian binari

Di sini, kami akan menggunakan kaedah carian binari untuk menyelesaikan masalah ini dengan lebih cekap. Dalam kaedah ini kami melakukan carian binari untuk elemen pertama yang tidak terdapat dalam tatasusunan. Kod untuk kaedah ini ialah -

Contoh

<!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>
Salin selepas log masuk

Oleh kerana kami melakukan carian binari, kerumitan masa kaedah di atas ialah O(log n).

Kaedah ini lebih cekap daripada kaedah mudah kami kerana ia mengambil kesempatan daripada fakta bahawa tatasusunan disusun.

Kaedah 3: Kaedah carian linear

Kaedah ketiga yang akan kita bincangkan ialah kaedah carian linear. Kaedah ini bergantung pada fakta bahawa tatasusunan diisih, yang akan membolehkan kami menggunakan carian linear untuk mengenal pasti nombor yang hilang.

Kaedah carian linear berfungsi dengan mengulangi tatasusunan dan membandingkan setiap ahli dengan indeksnya. Jika indeks sesuatu elemen tidak sama dengan nilainya, elemen yang hilang berada di tempat lain dalam tatasusunan sebelum elemen itu. Kami mengembalikan indeks elemen yang hilang.

Contoh

Kod kaedah carian linear adalah seperti berikut -

<!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>
Salin selepas log masuk

Kerumitan masa kaedah ini ialah O(n) kerana kita perlu mengulangi keseluruhan tatasusunan.

Kaedah ini kurang cekap daripada kaedah carian binari, tetapi berguna untuk tatasusunan kecil.

Kaedah 4: Carian Binari Yang Diperbaiki

Kaedah keempat yang akan kita bincangkan ialah kaedah carian binari yang dipertingkatkan. Kaedah ini sangat serupa dengan kaedah carian binari, kecuali daripada membandingkan elemen tengah dengan integer yang hilang, kami membandingkannya dengan indeksnya.

Idea asas di sebalik kaedah carian binari yang diubah suai adalah untuk membahagi tatasusunan kepada separuh pada setiap langkah dan membandingkan elemen tengah dengan indeksnya. Jika elemen tengah lebih besar daripada indeksnya, ahli yang hilang mesti berada di separuh kiri tatasusunan. Jika elemen tengah sama dengan atau kurang daripada indeksnya, elemen yang hilang mestilah berada di separuh kanan tatasusunan.

Contoh

Ini ialah pelaksanaan kod kaedah carian binari yang diubah suai -

<!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>
Salin selepas log masuk

Kerumitan masa kaedah ini juga O(log n), yang sama dengan kaedah carian binari.

Kaedah ini lebih cekap daripada kaedah carian linear dan memerlukan pengisihan tatasusunan.

Kesimpulan

Dalam blog ini, kami membincangkan empat kaedah untuk mencari nombor terkecil yang hilang daripada tatasusunan. Ini adalah kaedah naif, kaedah carian binari, kaedah carian linear dan kaedah carian binari yang diubah suai.

Atas ialah kandungan terperinci Program JavaScript untuk mencari nombor terkecil yang hilang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Ganti aksara rentetan dalam javascript Ganti aksara rentetan dalam javascript Mar 11, 2025 am 12:07 AM

Penjelasan terperinci mengenai kaedah penggantian rentetan javascript dan Soalan Lazim Artikel ini akan meneroka dua cara untuk menggantikan watak rentetan dalam JavaScript: Kod JavaScript dalaman dan HTML dalaman untuk laman web. Ganti rentetan di dalam kod JavaScript Cara yang paling langsung ialah menggunakan kaedah pengganti (): str = str.replace ("cari", "ganti"); Kaedah ini hanya menggantikan perlawanan pertama. Untuk menggantikan semua perlawanan, gunakan ungkapan biasa dan tambahkan bendera global g: str = str.replace (/fi

Tutorial Persediaan API Carian Google Custom Tutorial Persediaan API Carian Google Custom Mar 04, 2025 am 01:06 AM

Tutorial ini menunjukkan kepada anda bagaimana untuk mengintegrasikan API carian Google tersuai ke dalam blog atau laman web anda, menawarkan pengalaman carian yang lebih halus daripada fungsi carian tema WordPress standard. Ia menghairankan mudah! Anda akan dapat menyekat carian ke y

Bina Aplikasi Web Ajax anda sendiri Bina Aplikasi Web Ajax anda sendiri Mar 09, 2025 am 12:11 AM

Jadi di sini anda, bersedia untuk mempelajari semua perkara ini yang dipanggil Ajax. Tetapi, apa sebenarnya? Istilah Ajax merujuk kepada kumpulan teknologi longgar yang digunakan untuk membuat kandungan web yang dinamik dan interaktif. Istilah Ajax, yang asalnya dicipta oleh Jesse J

Contoh warna json fail Contoh warna json fail Mar 03, 2025 am 12:35 AM

Siri artikel ini ditulis semula pada pertengahan 2017 dengan maklumat terkini dan contoh segar. Dalam contoh JSON ini, kita akan melihat bagaimana kita dapat menyimpan nilai mudah dalam fail menggunakan format JSON. Menggunakan notasi pasangan nilai utama, kami boleh menyimpan apa-apa jenis

8 plugin susun atur halaman jquery yang menakjubkan 8 plugin susun atur halaman jquery yang menakjubkan Mar 06, 2025 am 12:48 AM

Leverage JQuery untuk Layouts Laman Web yang mudah: 8 Plugin Essential JQuery memudahkan susun atur laman web dengan ketara. Artikel ini menyoroti lapan plugin jQuery yang kuat yang menyelaraskan proses, terutamanya berguna untuk penciptaan laman web manual

Apa itu ' ini ' Dalam JavaScript? Apa itu ' ini ' Dalam JavaScript? Mar 04, 2025 am 01:15 AM

Mata teras Ini dalam JavaScript biasanya merujuk kepada objek yang "memiliki" kaedah, tetapi ia bergantung kepada bagaimana fungsi dipanggil. Apabila tidak ada objek semasa, ini merujuk kepada objek global. Dalam penyemak imbas web, ia diwakili oleh tetingkap. Apabila memanggil fungsi, ini mengekalkan objek global; tetapi apabila memanggil pembina objek atau mana -mana kaedahnya, ini merujuk kepada contoh objek. Anda boleh mengubah konteks ini menggunakan kaedah seperti panggilan (), memohon (), dan mengikat (). Kaedah ini memanggil fungsi menggunakan nilai dan parameter yang diberikan. JavaScript adalah bahasa pengaturcaraan yang sangat baik. Beberapa tahun yang lalu, ayat ini

Tingkatkan pengetahuan jQuery anda dengan penonton sumber Tingkatkan pengetahuan jQuery anda dengan penonton sumber Mar 05, 2025 am 12:54 AM

JQuery adalah rangka kerja JavaScript yang hebat. Walau bagaimanapun, seperti mana -mana perpustakaan, kadang -kadang perlu untuk mendapatkan di bawah tudung untuk mengetahui apa yang sedang berlaku. Mungkin kerana anda mengesan bug atau hanya ingin tahu tentang bagaimana jQuery mencapai UI tertentu

10 helaian cheat mudah alih untuk pembangunan mudah alih 10 helaian cheat mudah alih untuk pembangunan mudah alih Mar 05, 2025 am 12:43 AM

Siaran ini menyusun helaian cheat berguna, panduan rujukan, resipi cepat, dan coretan kod untuk perkembangan aplikasi Android, BlackBerry, dan iPhone. Tiada pemaju harus tanpa mereka! Panduan Rujukan Gesture Touch (PDF) Sumber yang berharga untuk desig

See all articles