Latihan 1 dari materi Two Pointer Technique di Algoritma — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi twoSum(arr, target) dengan teknik two pointer:
arr sudah terurut dari kecil ke besar.
Kembalikan array berisi dua index (posisi, bukan angkanya) yang angkanya berjumlah target, index kiri duluan, misalnya [0, 6].
Mulai dengan left di awal dan right di akhir. Jumlah kekecilan: geser left. Kebesaran: geser right.
Kalau gak ada pasangan, kembalikan null.
console.log di starter jangan diubah. Output-nya harus tiga baris ini, berurutan:
0,6 (dari twoSum([1, 3, 5, 7, 11, 13, 17], 18))
0,4 (dari twoSum([2, 4, 6, 8, 10], 12))
null (dari twoSum([1, 2, 3], 10))
Function-nya juga dicek dengan array dan target lain.
Salah satu cek data lain memakai array 200 angka (0 sampai 199) yang menghitung berapa kali isinya dibaca: twoSum(arr, 397) harus mengembalikan 198,199 dengan paling banyak 1.000 kali baca. Two pointer cukup satu lintasan (sekitar 400 kali baca); loop bersarang yang mencoba semua pasangan butuh puluhan ribu, jadi gak lolos.
Hint
Karena array-nya terurut, jumlah dua ujung memberi tahu ke mana harus bergerak: kekecilan berarti butuh angka lebih besar, kebesaran berarti butuh angka lebih kecil.
Pakai let left = 0 dan let right = arr.length - 1, lalu loop while (left < right). Hitung arr[left] + arr[right], bandingkan dengan target, lalu return [left, right], left++, atau right--.
while (left < right) { const sum = arr[left] + arr[right]; if (sum === target) return [left, right]; if (sum < target) left++; else right--; } return null;
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...