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.
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.
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));
findSmallestAverageSubarray mengambil sebagai input tatasusunan integer arr dan integer k, dengan k ialah subray.
mengembalikan subarray dengan min terkecil.
minAvgPembolehubah dimulakan dengan nilai terbesar yang mungkin bagi nombor titik terapung.
minAvgStart digunakan untuk menyimpan indeks permulaan subarray dengan purata terkecil.
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.
if (i === 0) digunakan untuk mengira hasil tambah unsur dalam subarray pertama.
else digunakan untuk mengira jumlah elemen dalam subarray yang tinggal. Ia menolak elemen pertama subarray sebelumnya dan menambah elemen terakhir subarray semasa.
windowAvg digunakan untuk menyimpan purata sub-tatasusunan semasa.
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!