İki Listeyi Birleştir
İki sıralı listeyi birleştirerek yeni bir sıralı liste oluştur. sort(
Matris Çarpımı
İki matrisi çarpan bir fonksiyon yaz. Sol matrisin sütun sayısı sağ matrisin satır sayısına eşit olmalıdır; sonuç matrisi (m x p) boyutunda olur. Standart iç-çarpım algoritması kullan.
En Uzun Artan Alt Dizi
Bir dizideki en uzun sürekli artan alt dizinin uzunluğunu bul.
Fiyat Analizi
Ürün fiyatlarının bulunduğu bir sözlükten min, max ve ortalama fiyatı döndür.
Kümülatif Toplam
Bir listenin kümülatif (birikimli) toplamını hesapla. Her index i için sonuç[i] = input[0] + input[1] + ... + input[i]. Boş liste için boş liste döndür.
Tekrarlayan Elemanları Bul
Bir koleksiyonda birden fazla geçen elemanları bulun. Koleksiyon tipini sen seç: hangi yapı en verimli?
İki Listenin Kesişimi
İki koleksiyondaki ortak elemanları bul. Performans senin kararın: O(n²
En Sık Geçen Eleman
Bir koleksiyonda en çok geçen elemanı bul. Birden fazla aynı frekansta varsa ilkini döndür.
Stack ve Queue Simülasyonu
Bir closure factory yaz. mode="queue" verildiğinde FIFO (kuyruk), mode="stack" verildiğinde LIFO (yığın) davranan bir nesne döndür. Nesnenin add(x) ve remove() metodu olsun; remove() eklenen değeri döndürür.
Otomatik Gruplama
Çiftlerden (key, value) oluşan bir listeyi anahtara göre grupla. Sonuç: {key: [value1, value2, ...]} sözlüğü. Gruplama sırası korunur.
İç içe 1 seviye listeyi düzleştir
İç içe 1 seviye listeyi düzleştir. [[1,2], [3,4], [5]] → [1, 2, 3, 4, 5] Hangi yol daha okunur?
Lazy Üretici
Bellek tasarrufu için 0'dan n-1'e kadar sayı üreten generator fonksiyonu yaz. yield kullan; n=0 ise hiç eleman üretmez. Sonuç list olarak verilecekse eager çevrim yapılabilir.
Sıralı Dizide Hızlı Arama
Sıralı bir koleksiyonda belirli bir değeri hızlıca bul. O(n
Top-K En Küçük Eleman
Bir koleksiyondaki en küçük K elemanı döndür. Listeyi tam sıralama (O(n log n
Kelime Frekansı
Bir metindeki kelime frekanslarını dict olarak döndür. Noktalama ve büyük/küçük harf duyarlı olmasın.
Zip ile Ters Çevirme
Aynı uzunluktaki birden fazla listeyi tek bir liste oluştur. Liste-içinde-liste yap. [(1, 'a', 'x'
Çoklu Anahtara Göre Sıralama
Bir sözlük listesini çoklu anahtara göre sırala. Önce yaşa göre artan, sonra ada göre alfabetik. Yapıyı sen seç.
Bir dict ver
Bir dict ver. Anahtarlarını value'ya göre artan sırala. Value eşitse alfabetik olarak anahtara göre sırala. Sonuç: [(key, value
Deque Kullanarak Kayan Pencere Maksimumu
Bir dizide k boyutunda kayan pencere ile her pencerenin maksimumunu bul. O(n
Bir string\'deki parantezlerin (
Bir string'deki parantezlerin dengeli olup olmadığını kontrol et. Üç tip parantez: (), [], {}. Sadece bu karakterler dikkate alınır. Açılışta stack'e push, kapanışta pop ve eşleşme kontrolü.
LRU Cache Uygulaması
En az kullanılan (LRU) elemanı çıkaran bir cache sınıfı yaz. get(key) ve put(key, value) operasyonları O(1) olmalı. Kapasite dolduğunda en az kullanılan eleman çıkarılır.
Python Veri Yapıları Nedir?
Veri Yapıları Nedir?
Veri yapıları, veriyi organize etmenin, depolamanın ve üzerinde işlem yapmanın yollarıdır. Doğru veri yapısı seçimi, algoritmanın hızını ve bellek kullanımını doğrudan etkiler. Mülakatlarda en sık sorulan veri yapıları: stack (yığın), queue (kuyruk), linked list (bağlı liste), tree (ağaç), graph (çizge), heap ve hash table (sözlük).
Python'da yerleşik veri yapıları list, dict, set ve tuple ile başlar. collections modülünde ise deque, Counter, OrderedDict, defaultdict gibi gelişmiş yapılar yer alır.
from collections import deque, Counter, defaultdict
# Stack (LIFO) — list.append/pop
stack = []
stack.append(1) # push
stack.append(2)
stack.pop() # pop → 2
# Queue (FIFO) — deque
q = deque()
q.append(1) # enqueue (sağdan ekle)
q.append(2)
q.popleft() # dequeue (soldan çıkar) → 1
# Counter — sayım
sayim = Counter("abracadabra")
print(sayim.most_common(3)) # [('a', 5), ('b', 2), ('r', 2)]
# defaultdict — varsayılan değerli dict
graph = defaultdict(list)
graph["a"].append("b")Big-O Karmaşıklık ve Doğru Yapı Seçimi
Her veri yapısının ekleme, silme, arama işlemleri için farklı zaman karmaşıklıkları vardır. list araması O(n), dict araması O(1) ortalamadır. Bu yüzden sık arama yapılacaksa dict, sıralı veri veya benzersizlik gerekiyorsa set, LIFO gerekiyorsa list (append/pop), FIFO gerekiyorsa deque tercih edilir.
Mülakatlarda "neden bu veri yapısını seçtin?" sorusu sıklıkla gelir. Cevabını bil: O(1) mi O(n) mi, hangi edge case'lerde bozulur, hangi senaryolarda alternatif daha iyi olur.
collections modülünü kullan.- Stack (LIFO): undo/redo, parantez dengesi, DFS, expression evaluation
- Queue (FIFO): BFS, task scheduling, printer queue, message queue
- Linked List: sık insert/delete (ortada), bellek tasarrufu, dynamic size
- Tree (BST/Heap): sıralı erişim, range query, priority queue
- Graph: ağ yapıları, shortest path, dependency, sosyal ağ
- Hash Table (dict): O(1) arama, sayaç, memoization, cache
İlgili Kategoriler
Python Stack
Stack veri yapısı için 5+ soru.
Python Queue
Queue veri yapısı için 5+ soru.
Python Heap
Heap / priority queue için 8+ soru.
Tüm Mülakat Kategorileri
9 kategori, 132 soru.
Python Eğitimi
Sıfırdan ileri seviyeye Türkçe dersler.
Python Temelleri
Değişkenler, veri tipleri, döngüler, fonksiyonlar.