İçeriğe atla
ΣDSA Patterns
Menü
Dil

Hashing

Rehber 4 / 6 · Yol 4 / 6

Etkileşimli

Zihinsel model

Bu problem için animasyonlu çözüm. Adımları kaydır veya boşlukla duraklat; değişmezi yüksek sesle yeniden anlat.

Adım 1 / 6
1
2
3
1
eşlem{ }

seen = {}

Yinelenen içerir: bir değer iki kez görünürse true. Bir set ile tek tarama.

Demo önizleme: Bu çözümler otomatik test paketini geçiyor ama insan tarafından incelenmedi. Trade-off ve yazıları taslak olarak değerlendirin.

Contains Duplicate

Problem (yeniden ifade)

Dizide herhangi bir değer en az iki kez görünüyorsa true döndür.

Sezgi

Bir küme görülen değerleri hatırlar; ikinci görülüş yinelenendir.

Yaklaşımlar

Hash kümesi

Doğrulanmadı
Zaman O(n)Alan O(n)

Fikir. Her sayıyı kümeye ekle; zaten varsa true döndür.

Yürüyüş. [1,2,3,1] → 1’i tekrar gör → true.

Trade-off. Sıralama, mutasyona izin varsa O(n log n) zaman ve O(1) ekstra bellek.

Çözüm
export function containsDuplicate(nums: number[]): boolean {
  const seen = new Set<number>();
  for (const x of nums) {
    if (seen.has(x)) return true;
    seen.add(x);
  }
  return false;
}
export function containsDuplicate(nums: number[]): boolean {
  const seen = new Set<number>();
  for (const x of nums) {
    if (seen.has(x)) return true;
    seen.add(x);
  }
  return false;
}

Şablon bağlantısı

Hashing şablonunun “daha önce görüldü mü?” hash-set hali.

Yansıma