Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Array ve Hashing Pattern'leri: Two Pointers, Sliding Window, Prefix Sum ve Frequency Map
İç içe döngünün tekrar tekrar hesapladığını bir kez hesaplayıp saklamak, two sum'ı O(n²)'den O(n)'e indiriyor: 100.000 fiyatta brute force 1,69 saniye, Dictionary'li versiyon 0,32 ms sürüyor. Yazıda frequency map ve CountBy'ı, two pointers'ı, sabit ve değişken genişlikli sliding window'u, TimeProvider ile test edilen bir rate limiter'ı ve prefix sum + Dictionary ile toplamı k olan aralıkları saymayı xUnit testleriyle anlatıyoruz.
Hash Table Nasıl Çalışır: C# ile Kendi HashMap'ini Yazmak, Collision ve Load Factor
Hash table, key'in hash code'undan bucket index'i hesaplayıp collision'ları chaining ya da open addressing ile çözer; her zaman 42 dönen bir GetHashCode, 10.000 key'lik Dictionary'yi 967 kat yavaşlatıyor. Yazıda .NET Dictionary ile aynı iç yapıda (buckets + entries, free list, prime boyutlar) kendi HashMap'imizi, tombstone'lu linear probing'i, randomized string hashing'i ve bir Bloom filter'ı xUnit testleriyle yazıyoruz.