Easyhashing
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
- “En az iki kez” hashing’i (set) 90 saniyede nasıl seçtirir? Sıralayıp komşu kıyas O(n log n) olur.
- Boş dizi ve tek eleman false müdür?
- Set’e eklemeden önce
haskontrolünü unutursan ne olur?