Two Pointer pada Array Terurut
Menggerakkan kedua ujung ke dalam untuk menemukan target
Two Pointer pada Array Terurut adalah pelajaran Competitive Programming Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Competitive Programming Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Competitive Programming Academy mencakup 4 pelajaran total.
Mengapa Dua Penunjuk
Teknik dua penunjuk memindai larik dengan dua indeks, bukan dengan perulangan bersarang, sehingga banyak gagasan O(n^2) berubah menjadi satu lintasan O(n) yang rapi. 🎯
Terurut adalah Kata Ajaib
Versi klasiknya membutuhkan larik yang terurut. Urutan membantu Anda bernalar: bergerak ke kanan memperbesar nilai, sedangkan bergerak ke kiri memperkecilnya, sehingga setiap langkah merupakan keputusan nyata.
Dua Penunjuk di Kedua Ujung
Mulailah satu penunjuk di ujung kiri dan satu lagi di ujung kanan. Keduanya saling berhadapan dan perlahan akan mempersempit jarak di antara mereka.
left = 0
right = len(a) - 1Gerakkan Ujung ke Dalam
Pada setiap langkah, Anda menggerakkan tepat satu penunjuk ke arah dalam. Urutan larik memberi tahu sisi mana yang perlu digeser agar Anda semakin dekat dengan tujuan.
Kondisi Perulangan
Teruskan perulangan selama left < right. Saat keduanya bertemu atau saling melewati, semua pasangan yang berguna sudah diperiksa dan Anda dapat berhenti.
while left < right:
# inspect a[left] and a[right]
passMembaca Jumlah Saat Ini
Perhatikan a[left] + a[right] sebagai calon hasil saat ini. Membandingkannya dengan sasaran memberi tahu apakah Anda memerlukan nilai yang lebih besar atau lebih kecil berikutnya.
total = a[left] + a[right]Terlalu Kecil: Gerakkan Penunjuk Kiri
Jika jumlahnya lebih kecil daripada sasaran, Anda memerlukan nilai yang lebih besar. Gerakkan penunjuk kiri ke kanan menuju nilai-nilai yang lebih besar karena larik terurut secara menaik.
if total < target:
left += 1Terlalu Besar: Gerakkan Penunjuk Kanan
Jika jumlahnya lebih besar daripada sasaran, Anda memerlukan nilai yang lebih kecil. Gerakkan penunjuk kanan ke kiri menuju nilai-nilai yang lebih kecil untuk menurunkan jumlah keseluruhan.
elif total > target:
right -= 1Setiap Langkah Menyingkirkan Pekerjaan
Setiap pergerakan menyingkirkan seluruh kelompok pasangan yang tidak perlu Anda uji. Itulah sebabnya pemindaian ini bersifat linear, bukan kuadratik.
Mengapa Tetap Benar
Anda hanya membuang pasangan yang tidak mungkin cocok, sehingga jawaban yang benar tidak pernah terlewat. Keamanan inilah yang membuat dua penunjuk dapat diandalkan dalam kontes.
Melampaui Kedua Ujung
Gagasan yang sama mendukung berbagai variasi: membalik urutan di tempat, mempartisi, dan menggabungkan. Setelah menguasai penunjuk yang saling bertemu, semua teknik ini akan terasa familier.
Pemeriksaan Singkat
Anda sedang memindai larik terurut dari kedua ujung untuk mencari jumlah sasaran.
Rangkuman
Dua penunjuk menyapu larik terurut dari kedua ujung, dengan salah satunya bergerak ke dalam pada setiap langkah selama left < right. Linear, benar, dan menjadi dasar bagi banyak trik. 🚀
Belajar Python dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Two Pointer pada Array Terurut” gratis?
Ya — teks lengkap “Two Pointer pada Array Terurut” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Competitive Programming Academy, upgrade ke CoddyKit PRO. Kursus Competitive Programming Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Two Pointer pada Array Terurut”?
Menggerakkan kedua ujung ke dalam untuk menemukan target Kamu berlatih Competitive Programming Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Competitive Programming Academy?
Tidak diperlukan pengalaman sebelumnya. Competitive Programming Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Two Pointer pada Array Terurut” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Competitive Programming Academy ini?
Ya. Setiap pelajaran Competitive Programming Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Two Pointer pada Array Terurut
- Menemukan Pasangan dengan Jumlah Tertentu
- Menghapus Duplikat di Tempat
- Menggabungkan Dua Urutan Terurut