862. Subarray Terpendek dengan Jumlah Sekurang-kurangnya K
Kesukaran: Sukar
Topik: Tatasusunan, Carian Perduaan, Baris Gilir, Tetingkap Gelongsor, Timbunan (Barisan Keutamaan), Jumlah Awalan, Baris Monotonic
Diberikan nombor tatasusunan integer dan integer k, kembalikan panjang terpendek bukan kosong subarray nombor dengan jumlah sekurang-kurangnya k. Jika tiada subarray seperti itu, kembalikan -1.
Subarray ialah bahagian bersebelahan daripada tatasusunan.
Contoh 1:
Contoh 2:
Contoh 3:
Kekangan:
Penyelesaian:
Kita perlu menggunakan pendekatan tetingkap gelongsor yang digabungkan dengan jumlah awalan dan baris gilir monoton. Berikut ialah pendekatan langkah demi langkah:Langkah-langkah:
Jumlah Awalan:
Baris Gilir Monotonic:
Logik Tetingkap Gelongsor:
Mari laksanakan penyelesaian ini dalam PHP: 862. Subarray Terpendek dengan Jumlah Sekurang-kurangnya K
Penjelasan:
Susun Susun Awalan:
- Kami mengira jumlah terkumpul tatasusunan dalam tatasusunan prefix_sum. Ini membantu dalam mengira jumlah mana-mana nombor subarray[i...j] dengan menggunakan formula prefix_sum[j 1] - prefix_sum[i].
Baris Gilir Monotonic:
- Deque memegang indeks tatasusunan prefix_sum dalam susunan nilai yang semakin meningkat. Kami mengekalkan perintah ini supaya kami dapat mencari subarray terkecil dengan cekap yang jumlahnya lebih besar daripada atau sama dengan k.
Logik Tetingkap Gelongsor:
- Semasa kami merentasi tatasusunan prefix_sum, kami cuba mencari subarray terkecil menggunakan perbezaan antara prefix_sum[i] semasa dan prefix_sum[deque[0]] sebelumnya].
- Jika perbezaan lebih besar daripada atau sama dengan k, kami mengira panjang subarray dan mengemas kini panjang minimum yang ditemui.
Keputusan Pengembalian:
- Jika tiada subarray yang sah ditemui, kembalikan -1. Jika tidak, kembalikan panjang subarray minimum.
Kerumitan Masa:
Pendekatan ini memastikan penyelesaian berjalan dengan cekap walaupun untuk input yang besar.
Pautan Kenalan
Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberi repositori bintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna bagi saya!
Jika anda mahukan kandungan yang lebih berguna seperti ini, sila ikuti saya:
Atas ialah kandungan terperinci . Subarray Terpendek dengan Jumlah sekurang-kurangnya K. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!