Pelajaran 4.2
Menemukan duplikat
7 menit · 8 langkah
Langkah 1 dari 8 · Penjelasan
Untuk duplikat, pertanyaannya cuma satu: "sudah pernah lihat angka ini?" Simpan setiap angka yang lewat, lalu cek sebelum menyimpan.
Kalau kamu juga butuh di mana angka itu pertama muncul, pakai Map dari angka ke index. Untuk
[4, 1, 7, 1], 1 disimpan dengan index 1, lalu 1 yang kedua di index 3 sudah ada di map, jadi hasilnyatrue. Kalau cukup "ada atau tidak", pakai Set.seen.has(x)danseen.add(x), masing-masing satu langkah.Langkah 2 dari 8 · Tebak hasilnya
Apa yang di-return untuk
[3, 3, 3, 5]?function solution(nums) { const seen = new Set() let dupes = 0 for (const x of nums) { if (seen.has(x)) dupes++ seen.add(x) } return dupes}231
Langkah 3 dari 8 · Tebak hasilnya
new Set(nums)membuang duplikat. Apa yang di-return untuk[1, 2, 2, 3, 3, 3]?function solution(nums) { const unique = new Set(nums) return nums.length - unique.size}325
Langkah 4 dari 8 · Cari bug-nya
Soal "Return true kalau ada angka yang muncul dua kali." Untuk
[1, 2, 1]kode ini me-returnfalse. Ketuk baris yang salah.function solution(nums) { const seen = new Set() for (const x of nums) { if (seen[x]) return true seen.add(x) } return false}Langkah 5 dari 8 · Susun kodenya
Susun function yang membuang duplikat tapi menjaga urutan kemunculan pertama.
[3, 1, 3, 2, 1]jadi[3, 1, 2]. Dua baris tidak termasuk.const out = []seen.add(x)return [...seen].sort((a, b) => a - b)for (const x of nums) {}if (seen.has(x)) continuereturn out}out.push(x)function solution(nums) {const seen = new Set()if (!seen.has(x)) continueLangkah 6 dari 8 · Pilih pendekatan
"Return huruf pertama yang muncul untuk kedua kalinya." Constraint:
1 ≤ s.length ≤ 10⁵.
Cara mana yang tepat?- Satu kali jalan dengan Set. Return huruf yang sudah ada di Set
- Untuk setiap huruf, cek
s.indexOf(ch) !== s.lastIndexOf(ch) - Sort hurufnya, lalu cari dua huruf sama yang bersebelahan
Langkah 7 dari 8 · Tulis kodenya
solution(nums)Return angka pertama yang muncul untuk kedua kalinya (yang salinan keduanya paling awal). Kalau tidak ada, return
null.
Constraint:0 ≤ nums.length ≤ 10⁵.function solution(nums) { // [2, 5, 1, 5, 2] -> 5 }Langkah 8 dari 8 · Ringkasan
- "Sudah pernah lihat?" dijawab dengan Set. Kalau butuh index-nya, pakai Map.
- Cek dulu, baru simpan. Kalau terbalik, setiap item terlihat duplikat.
- Set dan Map dibaca dengan
.hasdan.get, bukan kurung siku.