Dec 31, 2025

Bagaimana cara menggunakan jendela geser untuk masalah array yang diurutkan?

Tinggalkan pesan

Teknik jendela geser adalah pendekatan algoritmik yang kuat yang dapat diterapkan secara efektif untuk memecahkan berbagai masalah, terutama yang melibatkan array yang diurutkan. Sebagai pemasok jendela geser, saya telah menyaksikan secara langsung bagaimana teknik ini menyederhanakan masalah kompleks dan meningkatkan efisiensi. Di blog ini, saya akan mempelajari cara menggunakan jendela geser untuk masalah susunan terurut, memberikan contoh dan wawasan praktis.

Memahami Teknik Jendela Geser

Teknik jendela geser melibatkan pembuatan jendela dengan ukuran tertentu yang meluncur melalui array. Jendela ini dapat disesuaikan berdasarkan kebutuhan masalah, dan membantu dalam memproses sub - array atau subset data secara efisien. Keuntungan utama menggunakan jendela geser untuk array yang diurutkan adalah memanfaatkan sifat array yang diurutkan untuk mengurangi kompleksitas waktu penyelesaian.

Mari kita mulai dengan contoh sederhana. Misalkan kita memiliki larik bilangan bulat yang diurutkan, dan kita ingin mencari jumlah maksimum sub - larik dengan ukuran k tertentu.

def max_sum_subarray(arr, k): n = len(arr) if n < k: return Tidak ada window_sum = sum(arr[:k]) max_sum = window_sum untuk i dalam rentang(k, n): window_sum = window_sum - arr[i - k] + arr[i] max_sum = max(max_sum, window_sum) return max_sum

Dalam kode ini, pertama-tama kita menghitung jumlah k elemen pertama untuk menginisialisasi jendela. Kemudian, saat jendela meluncur melalui array, kita kurangi elemen yang keluar dari jendela dan tambahkan elemen baru yang masuk ke dalam jendela. Dengan cara ini, kita menghindari penghitungan ulang jumlah seluruh sub - array setiap saat, yang akan memiliki kompleksitas waktu O(nk) jika dilakukan secara naif. Sebaliknya, pendekatan jendela geser mengurangi kompleksitas waktu menjadi O(n).

Aplikasi dalam Masalah Array Terurut

1. Menemukan Pasangan dengan Jumlah Tertentu

Mengingat array yang diurutkan dan jumlah target, kita dapat menggunakan teknik jendela geser untuk menemukan semua pasangan elemen yang berjumlah hingga jumlah target.

def find_pairs_with_sum(arr, target): kiri, kanan = 0, len(arr) - 1 pasang = [] sedangkan kiri < kanan: jumlah_saat ini = arr[kiri] + arr[kanan] if jumlah_saat ini == target: berpasangan.tambahkan((arr[kiri], arr[kanan])) kiri += 1 kanan -= 1 elif jumlah_saat ini < target: kiri += 1 yang lain: kanan -= 1 pasang kembali

Dalam contoh ini, kita menggunakan dua pointer (suatu bentuk jendela geser) di awal dan akhir array yang diurutkan. Jika jumlah elemen pada pointer sama dengan target, kita menambahkan pasangan ke hasil dan memindahkan kedua pointer. Jika jumlahnya kurang dari target, kita gerakkan penunjuk ke kiri untuk menambah jumlahnya, dan jika lebih besar, kita gerakkan penunjuk ke kanan untuk mengurangi jumlahnya.

2. Subarray dengan Rata-rata yang Diberikan

Misalkan kita ingin mencari semua sub - array dengan ukuran tertentu dalam array terurut yang memiliki rata - rata tertentu. Pertama-tama kita dapat mengubah soal rata-rata menjadi soal penjumlahan dengan mengalikan rata-rata dengan ukuran sub - array untuk mendapatkan jumlah target.

def subarrays_with_given_average(arr, k, avg): target_sum = k * avg n = len(arr) if n < k: return [] window_sum = sum(arr[:k]) result = [] if window_sum == target_sum: result.append(arr[:k]) untuk i dalam rentang(k, n): window_sum = window_sum - arr[i - k] + arr[i] if window_sum == target_sum: result.append(arr[i - k + 1:i + 1]) mengembalikan hasil

Produk Jendela Geser Kami

Sebagai pemasok jendela geser, kami menawarkan berbagai macam jendela geser berkualitas tinggi yang cocok untuk berbagai aplikasi. Misalnya, jika Anda sedang mencariJendela Geser Vinyl Untuk Teras, produk kami dirancang untuk memberikan daya tahan dan daya tarik estetika. Jendela ini terbuat dari bahan vinil bermutu tinggi yang tahan terhadap berbagai kondisi cuaca.

Jika Anda ingin meningkatkan privasi dan kontrol cahaya pada jendela geser Anda, kamiTirai Untuk Jendela Geseradalah pilihan yang sangat baik. Mereka datang dalam berbagai gaya dan warna untuk disesuaikan dengan dekorasi interior Anda.

Bagi mereka yang menghargai kedamaian dan ketenangan, kamiJendela Geser Kedap Suara 40dBdirancang untuk mengurangi kebisingan luar secara signifikan. Jendela-jendela ini ideal untuk rumah-rumah yang terletak di dekat jalan-jalan sibuk atau daerah bising.

Vinyl Sliding Windows For PorchBlinds For Sliding Windows factory

Hubungi Kami untuk Pengadaan

Jika Anda tertarik dengan produk jendela geser kami atau memiliki pertanyaan mengenai teknik jendela geser untuk masalah susunan terurut, kami mendorong Anda untuk menghubungi kami. Tim ahli kami siap membantu Anda dalam menemukan solusi terbaik untuk kebutuhan Anda. Apakah Anda seorang pengembang yang mencari saran algoritmik atau pelanggan yang membutuhkan jendela geser berkualitas tinggi, kami siap membantu.

Referensi

  • Cormen, TH, Leiserson, CE, Rivest, RL, & Stein, C. (2009). Pengantar Algoritma. DENGAN Tekan.
  • Sedgewick, R., & Wayne, K. (2011). Algoritma. Addison - Wesley Profesional.
Kirim permintaan