Program JavaScript untuk mencari subarray dengan min terkecil

WBOY
Lepaskan: 2023-08-23 23:33:13
ke hadapan
1021 orang telah melayarinya

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

Kami akan menulis program untuk mencari subarray dengan min terkecil. Untuk melakukan ini, kami akan mengulangi tatasusunan dan menjejaki subarray semasa dan jumlahnya. Untuk setiap elemen, kami akan mengira purata subarray semasa dan membandingkannya dengan purata terkecil yang kami lihat setakat ini. Jika lebih rendah, kami mengemas kini purata minimum subarray serta indeks mula dan tamat. Pada penghujung lelaran, kami mengembalikan subarray dengan min terkecil.

Kaedah

Untuk mencari subarray dengan min terkecil, kita boleh mengikuti langkah-langkah ini -

  • Memulakan dua pembolehubah, mula dan akhir, untuk menjejaki indeks mula dan akhir subarray.

  • Gunakan untuk untuk mengulang tatasusunan, menjejaki jumlah semasa dan purata terkecil yang ditemui setakat ini.

  • Dalam setiap lelaran, bandingkan jumlah semasa dengan purata minimum dan jika minimum baharu ditemui, kemas kini pembolehubah Mula dan Tamat.

  • Jika jumlah semasa lebih besar daripada purata minimum, gerakkan indeks permulaan ke hadapan sehingga jumlahnya kurang daripada purata minimum.

  • Ulang langkah 2-4 sehingga anda sampai ke penghujung tatasusunan.

  • Subarray dengan purata terkecil ialah subarray bermula dari mula dan berakhir pada akhir.

Contoh

Memandangkan tatasusunan integer, cari subarray dengan min terkecil.

Berikut ialah contoh JavaScript berfungsi yang lengkap untuk menyelesaikan masalah ini -

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

Arahan

    Fungsi
  • findSmallestAverageSubarray mengambil sebagai input tatasusunan integer arr dan integer k, dengan k ialah subray.

  • Fungsi
  • mengembalikan subarray dengan min terkecil.

  • minAvgPembolehubah dimulakan dengan nilai terbesar yang mungkin bagi nombor titik terapung.

  • Pembolehubah
  • minAvgStart digunakan untuk menyimpan indeks permulaan subarray dengan purata terkecil.

  • Pembolehubah
  • windowSum digunakan untuk menyimpan jumlah elemen dalam subarray semasa.

  • Gelung luaruntuk (biar i = 0; i untuk panjang lelaran k dalam tatasusunan yang diberi arr.

  • Gelung dalamuntuk (biar j = 0; j digunakan untuk mengira jumlah unsur dalam subarray semasa.

  • Blok
  • if (i === 0) digunakan untuk mengira hasil tambah unsur dalam subarray pertama.

  • Blok
  • else digunakan untuk mengira jumlah elemen dalam subarray yang tinggal. Ia menolak elemen pertama subarray sebelumnya dan menambah elemen terakhir subarray semasa.

  • Pembolehubah
  • windowAvg digunakan untuk menyimpan purata sub-tatasusunan semasa.

  • Blok
  • if (windowAvg digunakan untuk mengemas kini purata minimum dan indeks permulaan sub-tatasusunan dengan purata minimum.

  • Akhir sekali, fungsi mengembalikan subarray dengan purata terkecil.

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

sumber:tutorialspoint.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!