Pelajaran 3.2
Hitung langkahnya
6 menit · 7 langkah
Langkah 1 dari 7 · Penjelasan
Satu loop di atas
nitem kira-kira butuhnlangkah. Dua loop bersarang di atas item yang sama butuh sekitarn × nlangkah. Itu ditulis O(n²).Untuk 10 item, bedanya kecil: 10 lawan 100. Untuk 100.000 item, bedanya 100.000 lawan 10.000.000.000. Makin besar
n, makin jauh n² meninggalkan n.Langkah 2 dari 7 · Tebak hasilnya
Berapa nilai
stepsdi akhir untukn = 6?function solution(n) { let steps = 0 for (let i = 0; i < n; i++) { for (let j = 0; j < n; j++) { steps++ } } return steps}3612216
Langkah 3 dari 7 · Tebak hasilnya
Dua loop, tapi tidak bersarang. Apa yang di-return untuk
n = 5?function solution(n) { let steps = 0 for (let i = 0; i < n; i++) steps++ for (let j = 0; j < n; j++) steps++ return steps}10255
Langkah 4 dari 7 · Tebak hasilnya
Loop yang membagi dua. Apa yang di-return untuk
n = 64?function solution(n) { let steps = 0 while (n > 1) { n = Math.floor(n / 2) steps++ } return steps}63263
Langkah 5 dari 7 · Pilih pendekatan
n = 10⁵. Kamu mengecek semua pasangan denganj = i + 1, sekitar 5 × 10⁹ cek. Anggap komputer menjalankan sekitar 10⁸ langkah sederhana per detik, dan batas waktunya beberapa detik.
Apa yang terjadi?- Terlalu lambat. Sekitar 50 detik, jadi tes kena timeout
- Aman, komputer sekarang sangat cepat
- Aman, karena
j = i + 1sudah memotong pekerjaannya
Langkah 6 dari 7 · Pilih pendekatan
Mana yang O(n²)?
- Loop di atas
nums, dan di dalamnyanums.includes(x) - Dua loop di atas
nums, satu setelah yang lain - Loop
whileyang membagindua setiap putaran - Loop di atas
numsyang membacanums[i - 1]
- Loop di atas
Langkah 7 dari 7 · Ringkasan
- Loop bersarang mengalikan, loop berurutan menjumlahkan.
- Membagi dua setiap putaran itu O(log n), sangat sedikit langkah.
- Hati-hati dengan loop tersembunyi seperti
includes,indexOf, danslicedi dalam loop. - Patokan kasar sekitar 10⁸ langkah sederhana per detik.