Pelajaran 3.3
Membaca constraint
6 menit · 7 langkah
Langkah 1 dari 7 · Penjelasan
Constraint diam-diam memberi tahu seberapa cepat solusimu harus jalan. Pakai patokan sekitar 10⁸ langkah sederhana per detik, lalu lihat batas
n.n ≤ 10³: O(n²) aman, sekitar 10⁶ langkah.n ≤ 10⁵: butuh O(n) atau O(n log n).n ≤ 10⁹: loop pun terlalu lambat. Cari rumus, atau O(log n).
Langkah 2 dari 7 · Pilih pendekatan
"Return berapa pasangan yang jumlahnya
target." Constraint:2 ≤ nums.length ≤ 1000.
Apakah brute force semua pasangan cukup?- Ya, sekitar 5 × 10⁵ cek, jauh di bawah batas
- Tidak, loop bersarang selalu terlalu lambat
- Tidak, harus pakai hash map supaya aman
Langkah 3 dari 7 · Pilih pendekatan
"Return berapa pasangan yang jumlahnya
target." Constraint:2 ≤ nums.length ≤ 10⁵.
Apa yang kamu lakukan?- Cari cara O(n) atau O(n log n), misalnya hash map atau sort dulu
- Tetap brute force, lalu berhenti lebih awal kalau ketemu
- Brute force dengan
j = i + 1supaya setengahnya
Langkah 4 dari 7 · Pilih pendekatan
"Return 1 + 2 + ... + n." Constraint:
1 ≤ n ≤ 10⁹. Apa pilihan yang tepat?- Rumus
n * (n + 1) / 2, satu langkah - Loop dari 1 sampai
n - Simpan semua angka di array, lalu jumlahkan
- Rumus
Langkah 5 dari 7 · Tebak hasilnya
Apa yang di-return untuk
n = 100?function solution(n) { return n * (n + 1) / 2}5050101005000
Langkah 6 dari 7 · Cari bug-nya
"Return angka terbesar, atau 0 kalau array kosong." Constraint:
0 ≤ nums.length ≤ 10⁵.
Untuk[], kode ini me-returnundefined. Ketuk baris yang salah.function solution(nums) { let best = nums[0] for (let i = 1; i < nums.length; i++) { if (nums[i] > best) best = nums[i] } return best}Langkah 7 dari 7 · Ringkasan
- Patokan sekitar 10⁸ langkah per detik. Bandingkan dengan jumlah langkah solusimu.
n ≤ 10³boleh O(n²).n ≤ 10⁵butuh O(n log n) atau O(n).n ≤ 10⁹butuh rumus atau O(log n).- Batas bawah juga penting.
0 ≤ lengthberarti array kosong pasti dites.