Set — Struktur Data

Set adalah koleksi yang hanya menyimpan nilai unik — tidak ada duplikat. Operasi dan kompleksitas: Operasi Kompleksitas add(value) O(1) has(value) O(1)…

Set adalah koleksi yang hanya menyimpan nilai unik — tidak ada duplikat.

Operasi dan kompleksitas:

Operasi Kompleksitas
add(value) O(1)
has(value) O(1)
delete(value) O(1)
const set = new Set();

set.add(1);
set.add(2);
set.add(3);
set.add(2); // Diabaikan — sudah ada!

set.size;     // 3
set.has(2);   // true
set.delete(1);

// Hilangkan duplikat dari array
const arr = [1, 2, 2, 3, 3, 3, 4];
const unique = [...new Set(arr)]; // [1, 2, 3, 4]

Operasi Set Matematika:

const a = new Set([1, 2, 3, 4]);
const b = new Set([3, 4, 5, 6]);

// Union (gabungan)
const union = new Set([...a, ...b]); // {1, 2, 3, 4, 5, 6}

// Intersection (irisan)
const intersection = new Set([...a].filter(x => b.has(x))); // {3, 4}

// Difference (selisih)
const difference = new Set([...a].filter(x => !b.has(x))); // {1, 2}

Kegunaan nyata:

🎭 Analogi sehari-hari: Set = daftar undangan reuni. Yang penting: siapa diundang, BUKAN urutan atau berapa kali. Ada nama yang ditambahkan 2x? Tetap satu. Mau cek "Budi diundang gak?" Langsung lihat (O(1)), gak baca dari awal sampai akhir.

💡 Set vs Array untuk membership check: arr.includes(x) itu O(n) — loop dari awal sampai ketemu. set.has(x) itu O(1). Loop 1jt items, tiap items cek keberadaan — Array O(n²) = 1 triliun ops. Set O(n) = 1jt ops. 1 juta kali lebih cepat.

⚠️ Jebakan umum:

🎯 Kapan Set, kapan Array, kapan Map?

🧪 Tebakan cepat: Hilangkan duplikat dari array [1,2,2,3,3,3]. Cara tercepat? [...new Set(arr)]. Satu baris, O(n).

TL;DR: Set = koleksi unik, has/add/delete O(1). Pakai untuk dedup, membership check, dan tracking visited nodes di graph.

Yang akan kamu pelajari