Rumah >pembangunan bahagian belakang >tutorial php >Menjinakkan Bom
1652. Menjinakkan Bom
Kesukaran: Mudah
Topik: Tatasusunan, Tingkap Gelongsor
Anda mempunyai bom untuk dilemahkan, dan masa anda semakin suntuk! Pemberi maklumat anda akan memberikan anda bulatan kod tatasusunan dengan panjang n dan kunci k.
Untuk menyahsulit kod, anda mesti menggantikan setiap nombor. Semua nombor diganti secara serentak.
Memandangkan kod adalah bulat, elemen kod seterusnya[n-1] ialah kod[0] dan elemen kod sebelumnya[0] ialah kod[n-1].
Memandangkan kod tatasusunan bulatan dan kunci integer k, kembalikan kod yang dinyahsulit untuk meredakan bom!
Contoh 1:
Contoh 2:
Contoh 3:
Kekangan:
Petunjuk:
Penyelesaian:
Kami boleh melaksanakan fungsi yang berulang ke atas tatasusunan kod dan mengira jumlah nombor yang sesuai berdasarkan nilai k.
Pendekatan umum adalah seperti berikut:
Sifat bulat tatasusunan bermaksud bahawa untuk indeks yang melebihi had tatasusunan, anda boleh menggunakan modulo (%) untuk "membungkus" tatasusunan.
Mari laksanakan penyelesaian ini dalam PHP: 1652. Menjinakkan Bom
Penjelasan:
Permulaan:
- Kami mencipta tatasusunan hasil yang dimulakan dengan sifar menggunakan array_fill.
Pengendalian k == 0:
- Jika k ialah sifar, tatasusunan output hanya diisi dengan sifar, seperti yang diperlukan oleh masalah.
Lelaran Melalui Tatasusunan:
- Untuk setiap indeks i dalam tatasusunan:
- Jika k > 0, jumlahkan elemen k seterusnya menggunakan aritmetik modulo untuk dililitkan.
- Jika k < 0, jumlahkan |k| sebelumnya elemen menggunakan aritmetik modulo dengan offset untuk mengendalikan indeks negatif.
Modulo Aritmetik:
- Kami menggunakan ($i $j) % $n untuk membungkus ke permulaan tatasusunan apabila mengakses indeks yang lebih besar daripada n - 1.
- Begitu juga, ($i - $j $n) % $n mengendalikan pembalut ke belakang untuk indeks negatif.
Kerumitan:
- Kerumitan Masa: O(n . |k|), dengan n ialah saiz tatasusunan dan |k| ialah nilai mutlak bagi k.
- Kerumitan Angkasa: O(n) untuk tatasusunan hasil.
Keluaran:
Contoh yang disediakan sepadan dengan hasil yang dijangkakan. Beritahu saya jika anda memerlukan penjelasan atau pengoptimuman lanjut!
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 Menjinakkan Bom. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!