Jadual Kandungan
Tatabahasa
Algoritma kod sumber
Kaedah 1: Brute force cracking
Algoritma
Contoh 2
Output
Kaedah 2: Kaedah pengoptimuman
Kesimpulan
Rumah pembangunan bahagian belakang C++ Hitung subarray panjang K yang min melebihi median tatasusunan yang diberikan

Hitung subarray panjang K yang min melebihi median tatasusunan yang diberikan

Sep 02, 2023 am 08:09 AM
nilai purata nombor median panjang subarray

Hitung subarray panjang K yang min melebihi median tatasusunan yang diberikan

Ungkapan "subarray panjang K" terpakai kepada subarray bersebelahan dengan unsur K tepat. Menguasai dan menggunakan subarray adalah penting untuk menyelesaikan pelbagai masalah dalam bidang seperti pengaturcaraan dinamik, geometri pengiraan dan analisis data.

Satu lagi konsep penting dalam operasi tatasusunan dan statistik ialah median. Median tatasusunan mewakili nilai di tengah apabila elemen diisih dalam tertib menaik. Apabila terdapat bilangan elemen genap, median ialah purata dua nilai pusat. Median membentuk ukuran kecenderungan memusat yang berterusan kerana ia kurang terdedah kepada nilai ekstrem atau outlier daripada min.

Kertas kerja ini cuba mengkaji cabaran menentukan bilangan subarray panjang K dalam tatasusunan tertentu yang min melebihi median. Dengan memahami hubungan antara min dan median set data, kita boleh menyelidiki cabaran ini dan membangunkan teknik yang cekap untuk menyelesaikannya. Sertai kami semasa kami membedah penyataan masalah, memeriksa konsep utama dan secara efisien mengira bilangan subarray panjang K yang diperlukan dalam tatasusunan.

Tatabahasa

Isih elemen dalam tatasusunan dalam tertib menaik.

sort(begin(array), end(array))
Salin selepas log masuk

Isytiharkan vektor integer.

vector<int> vec
</int>
Salin selepas log masuk

Isytihar tatasusunan integer

int arr[]
Salin selepas log masuk

Asas untuk sintaks gelung dalam C++.

for(int i=0; i<size; ++i)
Salin selepas log masuk

Algoritma kod sumber

  • Baca tatasusunan input dan saiznya.

  • Kira median tatasusunan yang diberi.

  • Untuk setiap subarray panjang K, kira purata.

  • Bandingkan min dengan median.

  • Subarray statistik yang min melebihi median.

Kaedah 1: Brute force cracking

Kaedah 1 membentuk penyelesaian mudah kepada cabaran menentukan bilangan subarray panjang K yang min melebihi median tatasusunan yang ditentukan. Pada mulanya, tatasusunan input diisih dan median dikira. Selepas itu, atur cara melelar melalui semua subarray K-panjang yang boleh dilaksanakan dan mengira puratanya dengan mengagregatkan komponennya. Jika min subarray melebihi median, kiraan akan ditambah. Akhirnya, kod tersebut mengembalikan bilangan subarray tersebut.

Algoritma

  • Kira median tatasusunan yang diberi.

  • Lelaran ke atas semua subarray panjang K yang mungkin.

  • Kira purata setiap sub-tatasusunan.

  • Jika min subarray lebih besar daripada median, tambahkan kiraan.

Contoh 1

Kod di bawah mengikut pendekatan brute force yang dinyatakan sebelum ini dalam artikel ini. Ia mula-mula menyusun tatasusunan input dan mengira median. Ia kemudian melelang ke atas semua subarray panjang K yang mungkin dan mengira puratanya dengan menjumlahkan elemennya. Jika min subarray lebih besar daripada median, kiraan akan ditambah. Akhirnya, kod tersebut mengembalikan kiraan subarray tersebut.

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int countSubarrays(vector<int> &arr, int n, int k) {
   int count = 0;
   double median;
   sort(arr.begin(), arr.end());
   median = (n % 2 == 0) ? (arr[n/2 - 1] + arr[n/2]) / 2.0 : arr[n/2];

   for (int i = 0; i <= n - k; i++) {
      double sum = 0;
      for (int j = i; j < i + k; j++) {
         sum += arr[j];
      }
      if (sum / k > median) {
         count++;
      }
   }
   return count;
}

int main() {
   vector<int> arr = {1, 5, 6, 7, 9};
   int n = arr.size();
   int k = 3;
   int result = countSubarrays(arr, n, k);
   cout << "Number of K-length subarrays with average exceeding median: " << result << endl;
   return 0;
}
Salin selepas log masuk

Output

Number of K-length subarrays with average exceeding median: 1
Salin selepas log masuk
Salin selepas log masuk

Kaedah 2: Kaedah pengoptimuman

Kaedah 2 ialah penyelesaian yang elegan untuk masalah menentukan bilangan subarray panjang K dengan min melebihi median tatasusunan yang ditentukan. Ia mula-mula menyusun tatasusunan input dan mengira median. Ia kemudiannya mengira tatasusunan jumlah awalan, yang digunakan untuk menentukan jumlah setiap subray panjang K. Algoritma melelaran ke atas semua subarray K-panjang yang mungkin, mengira puratanya menggunakan tatasusunan jumlah awalan dan membandingkan dengan median.

Jika min subarray melebihi median, kiraan akan dinaikkan. Akhirnya, program ini mengembalikan bilangan subarray tersebut. Pendekatan ini lebih cekap daripada pendekatan pertama kerana ia menggunakan tatasusunan jumlah awalan untuk mengira jumlah setiap subarray panjang K, sekali gus mengurangkan kerumitan masa jalan.

Algoritma

  • Kira median tatasusunan yang diberi.

  • Kira awalan dan tatasusunan.

  • Lelaran ke atas semua subarray panjang K yang mungkin.

  • Kira purata menggunakan awalan dan tatasusunan.

  • Jika min subarray lebih besar daripada median, tambahkan kiraan.

Contoh 2

Algoritma ini mengikut pendekatan terbaik yang diterangkan sebelum ini. Ia memanfaatkan tatasusunan jumlah awalan untuk mengira agregat dengan cepat untuk setiap subset panjang K. Selepas urutan input diisih dan nilai median ditentukan, jumlah awalan dikira. Atur cara kemudian menggelungkan semua subset panjang K, mengira puratanya menggunakan tatasusunan jumlah awalan dan membandingkannya dengan median. Jika min melebihi median, kiraan akan ditambah. Secara ringkasnya, kod tersebut mengembalikan bilangan subset tersebut.

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int countSubarrays(vector<int> &arr, int n, int k) {
   int count = 0;
   double median;
   sort(arr.begin(), arr.end());
   median = (n % 2 == 0) ? (arr[n/2 - 1] + arr[n/2]) / 2.0 : arr[n/2];

   vector<int> prefix_sum(n);
   prefix_sum[0] = arr[0];
   for (int i = 1; i < n; i++) {
      prefix_sum[i] = prefix_sum[i - 1] + arr[i];
   }

   for (int i = 0; i <= n - k; i++) {
      double sum = (i == 0) ? prefix_sum[i + k - 1] : prefix_sum[i + k - 1] - prefix_sum[i - 1];
      if (sum / k > median) {
         count++;
      }
   }
   return count;
}

int main() {
   vector<int> arr = {1, 5, 6, 7, 9};
   int n = arr.size();
   int k = 3;
   int result = countSubarrays(arr, n, k);
   cout << "Number of K-length subarrays with average exceeding median: " << result << endl;
   return 0;
}
Salin selepas log masuk

Output

Number of K-length subarrays with average exceeding median: 1
Salin selepas log masuk
Salin selepas log masuk

Kesimpulan

Dalam artikel ini, kami membincangkan dua cara untuk mengira subarray K-panjang yang min melebihi median tatasusunan yang diberikan menggunakan C++. Kaedah pertama ialah kaedah brute force, yang berulang ke atas semua subarray panjang K yang mungkin dan mengira puratanya. Kaedah kedua ialah pengoptimuman yang menggunakan awalan dan tatasusunan untuk mengira purata dengan lebih cekap. Kedua-dua kod disediakan dan boleh dilaksanakan untuk mencari bilangan subarray yang diperlukan.

Atas ialah kandungan terperinci Hitung subarray panjang K yang min melebihi median tatasusunan yang diberikan. 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)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan 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)

Apakah formula perkataan untuk purata? Apakah formula perkataan untuk purata? Sep 19, 2023 pm 01:48 PM

Rumus perkataan purata ialah "=PURATA(ATAS)". Langkah-langkah khusus untuk mengira purata: 1. Buka Word dan buat dokumen baharu 2. Dalam dokumen, masukkan data yang anda ingin kira purata, dengan setiap data menduduki satu baris atau lajur. Sebagai contoh, anda boleh memasukkan data dalam lajur pertama 3. Dalam sel kosong di bawah atau di sebelah kanan data, buka bar formula dan masukkan formula "=AVERAGE(ABOVE)" 4. Tekan kekunci Enter dan Word akan Mengira dan memaparkan nilai purata.

Min kuasa dua nombor asli? Min kuasa dua nombor asli? Sep 20, 2023 pm 10:29 PM

Purata kuasa dua nombor asli dikira dengan menambah semua kuasa dua n nombor asli dan kemudian membahagi dengan nombor itu. Dua nombor asli pertama dalam contoh ialah 2.5, 12+22=5=>5/2=2.5. Terdapat dua kaedah pengiraan dalam pengaturcaraan - Menggunakan gelung Menggunakan formula Mengira purata kuasa dua nombor asli menggunakan gelung Logik ini berfungsi dengan mencari kuasa dua semua nombor asli. Cari kuasa dua setiap satu dengan menggelung dari 1 hingga n dan tambah pada pembolehubah hasil tambah. Kemudian bahagikan jumlah itu dengan n. Program untuk mengira jumlah kuasa dua nombor asli - contoh kod tunjuk cara masa nyata #include<stdio.h>intmain(){ intn=2;

Apakah fungsi untuk purata tatasusunan dalam php? Apakah fungsi untuk purata tatasusunan dalam php? Jul 17, 2023 pm 04:03 PM

Fungsi purata tatasusunan PHP termasuk: 1. array_sum(), yang digunakan untuk mengira jumlah semua nilai dalam tatasusunan Untuk mengira purata, anda boleh menambah semua nilai dalam tatasusunan dan kemudian membahagi dengan bilangan elemen tatasusunan; 2, array_reduce(), digunakan untuk mengulang tatasusunan dan mengira setiap nilai dengan nilai awal 3. array_mean(), digunakan untuk mengembalikan purata tatasusunan, mula-mula mengira jumlah tatasusunan, dan hitung bilangan elemen tatasusunan, kemudian Jumlahnya dibahagikan dengan bilangan elemen tatasusunan untuk mendapatkan purata.

Diberi nombor ganjil, cari purata semua nombor ganjil Diberi nombor ganjil, cari purata semua nombor ganjil Sep 03, 2023 pm 03:49 PM

Purata nombor ganjil sehingga nombor ganjil yang diberikan adalah konsep yang mudah. Anda hanya perlu mencari nombor ganjil sehingga nombor itu, kemudian tambahkannya dan bahagikan dengan nombor itu. Jika anda ingin mencari purata nombor ganjil hingga n. Kemudian kita akan mencari nombor ganjil dari 1 hingga n dan menambahnya bersama-sama dan membahagi dengan bilangan nombor ganjil. Contoh Purata nombor ganjil hingga 9 ialah 5, iaitu 1+3+5+7+9=25=>25/5=5 Terdapat dua cara untuk mengira purata nombor ganjil hingga n, di mana n ialah nombor ganjil menggunakan gelung menggunakan formula Program untuk mencari purata nombor ganjil hingga n, menggunakan gelung Untuk mencari purata nombor ganjil hingga n, kita akan menambah semua nombor hingga n dan membahagikan dengan bilangan. nombor ganjil hingga n. Program untuk mengira purata nombor asli ganjil hingga n - contoh kod

Bagaimana untuk mencari purata tatasusunan satu dimensi dalam php Bagaimana untuk mencari purata tatasusunan satu dimensi dalam php Dec 26, 2022 am 10:20 AM

Cara mencari purata tatasusunan satu dimensi dalam PHP: 1. Buat fail PHP baharu 2. Buat tatasusunan 3. Gunakan fungsi array_sum untuk menjumlahkan elemen dalam tatasusunan; bilangan elemen tatasusunan Kemudian bahagikan dua nombor untuk mencari purata.

Apakah purata bagi semua nombor genap sebelum nombor genap yang diberikan? Apakah purata bagi semua nombor genap sebelum nombor genap yang diberikan? Aug 25, 2023 pm 11:53 PM

Untuk mencari purata nombor genap sebelum nombor genap yang diberikan, kami akan menjumlahkan semua nombor genap sebelum nombor tertentu dan kemudian mengira bilangan nombor genap. Kemudian bahagikan hasil tambah dengan bilangan nombor genap. Contoh Purata nombor genap hingga 10 ialah 6 iaitu 2+4+6+8+10=30=>30/5=6 Terdapat dua cara untuk mengira purata nombor genap hingga n iaitu nombor genap. Atur cara untuk mengira purata nombor genap hingga n menggunakan formula menggunakan gelung Menggunakan gelung Untuk mengira purata nombor genap hingga n, kita akan menambah semua nombor genap hingga n dan kemudian membahagi dengan bilangan nombor genap hingga n . Kira purata nombor asli genap hingga n - Contoh kod Demonstrasi langsung #include<stdio.h>intm

Bagaimana untuk mengira purata medan tertentu menggunakan fungsi AVG dalam MySQL Bagaimana untuk mengira purata medan tertentu menggunakan fungsi AVG dalam MySQL Jul 12, 2023 pm 03:28 PM

Cara mengira purata medan tertentu menggunakan fungsi AVG dalam MySQL Dalam sistem pengurusan pangkalan data, memproses data adalah tugas yang sangat biasa. Mengira purata medan adalah salah satu keperluan biasa. MySQL menyediakan fungsi AVG, yang boleh membantu kami mengira purata dengan mudah. Artikel ini akan memperkenalkan cara menggunakan fungsi AVG dalam MySQL, serta contoh kod yang berkaitan. Pertama, kita perlu memastikan bahawa pangkalan data MySQL dipasang dan dikonfigurasikan. Jika ia belum dipasang, anda boleh memuat turunnya dari laman web rasmi MySQL dan

Hitung subarray panjang K yang min melebihi median tatasusunan yang diberikan Hitung subarray panjang K yang min melebihi median tatasusunan yang diberikan Sep 02, 2023 am 08:09 AM

Ungkapan "subarray panjang K" digunakan untuk subarray bersebelahan dengan unsur K tepat. Menguasai dan menggunakan subarray adalah penting untuk menyelesaikan pelbagai masalah dalam bidang seperti pengaturcaraan dinamik, geometri pengiraan dan analisis data. Satu lagi konsep penting dalam operasi tatasusunan dan statistik ialah median. Median tatasusunan mewakili nilai di tengah apabila elemen diisih dalam tertib menaik. Apabila terdapat bilangan unsur genap, median ialah purata dua nilai pusat. Median merupakan ukuran kecenderungan memusat yang berterusan kerana ia kurang terdedah kepada nilai ekstrem atau outlier daripada min. Kertas kerja ini cuba mengkaji cabaran untuk menentukan bilangan subarray panjang K dalam tatasusunan tertentu yang min melebihi median. Kita boleh mendalami perkara ini dengan memahami hubungan antara min dan median bagi set data

See all articles