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

Hashing

Rehber 3 / 6 · Yol 3 / 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
100
4
200
1
3
2

set = {100,4,200,1,3,2}

En uzun ardışık seri O(n) zamanda. Her değeri bir set içine koy.

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

Mediumhashing

Longest Consecutive Sequence

Problem (yeniden ifade)

En uzun ardışık eleman dizisinin uzunluğunu döndür. O(n) zamanda çalışmalı.

Sezgi

Sayıları bir sete koy. Yalnızca öncülü olmayan sayılardan saymaya başla.

Yaklaşımlar

Hash set yalnızca başlangıçlar

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

Fikir. x-1 eksik olan her x için x, x+1, … eksilene kadar say. Maks seriyi tut.

Adım adım. [100,4,200,1,3,2] → 1’den başla → 1..4 uzunluk 4.

Trade-off’lar. Sıralama daha basit O(n log n) ama O(n) kısıtını bozar.

Çözüm
export function longestConsecutive(nums: number[]): number {
  const set = new Set(nums);
  let best = 0;
  for (const x of set) {
    if (set.has(x - 1)) continue;
    let y = x, len = 1;
    while (set.has(y + 1)) { y++; len++; }
    best = Math.max(best, len);
  }
  return best;
}
export function longestConsecutive(nums: number[]): number {
  const set = new Set(nums);
  let best = 0;
  for (const x of set) {
    if (set.has(x - 1)) continue;
    let y = x, len = 1;
    while (set.has(y + 1)) { y++; len++; }
    best = Math.max(best, len);
  }
  return best;
}

Şablon bağlantısı

Hash-set üyelik ve “yalnızca x-1 yoksa koşu başlat.”

Yansıma