Competitive Programming Academy · Pelajaran

Two Pointer pada Array Terurut

Menggerakkan kedua ujung ke dalam untuk menemukan target

Pelajaran 1 dari 413 langkah

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) - 1

Gerakkan 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]
    pass

Membaca 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 += 1

Terlalu 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 -= 1

Setiap 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. 🚀

Gratis untuk memulai

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

  1. Two Pointer pada Array Terurut
  2. Menemukan Pasangan dengan Jumlah Tertentu
  3. Menghapus Duplikat di Tempat
  4. Menggabungkan Dua Urutan Terurut
← Kembali ke Competitive Programming Academy