Algoritmalar Soruları
Sıralama, arama, DP, iki işaretçi.
İkili Arama
Sıralı bir listede binary search ile hedef sayının indeksini döndür. Bulunamazsa -1 döndür.
beginnerdef binary_search_index(...)Verilen miktarı en az sayıda bozuk para ile öde
Verilen miktarı en az sayıda bozuk para ile öde. Kullanılabilir bozukluklar: [100,50,25,10,5,1] kuruş.
beginnerdef make_change(...)Kaplama Problemi
n×m'lik bir grid var (ör: 3×3). Sol üstten (0,0) sağ alta (n-1,m-1) sadece SAĞ veya AŞAĞI hareket edebilirsin. Kaç farklı yol var? Bu klasik bir DP problemidir: dp[i][j] = dp[i-1][j] + dp[i][j-1]. n=1 veya m=1 için yol sayısı 1'dir.
intermediatedef grid_unique_paths(...)Alt Dizi Toplam Kontrolü
Bir sayı listesi ve bir hedef sayı veriliyor. Listedeki herhangi bir alt dizinin (continuous subsequence) toplamı hedefe eşit mi? Varsa True, yoksa False döndür. Boş alt dizi toplamı 0 kabul edilir, hedef 0 ise True.
intermediatedef subarray_sum_exists(...)Sirali Dizide Ilk ve Son Occurrence
Sirali bir dizide target degerin ILK ve SON indeksini bul. Yoksa [-1, -1] dondur.
intermediatedef search_range(...)Dondurulmus Sirali Dizide Arama
Döndürülmüş (rotated) sıralı bir dizide hedef değerin indexini bul. Aramayı O(log n)'de yap (binary search varyasyonu).
intermediatedef search_rotated(...)Tepe Elemanı Bul
Bir dizide tepe elemanı bul: nums[i-1] < nums[i] > nums[i+1]. Sadece komşularına bakarak (O(log n)) bulunabilir. Birden fazla tepe varsa herhangi birinin indeksini döndür.
intermediatedef find_peak_element(...)Iki Isaretci ile Palindrom Kontrolu
Bir string'in palindrom olup olmadığını iki işaretçi ile kontrol et. Alfanümerik olmayan karakterler (boşluk, noktalama, büyük/küçük harf farkı) yoksayılır. Boş string palindrom kabul edilir.
intermediatedef is_palindrome_two_pointer(...)Iki Isaretci Ile Ters Ciftleri Say
Bir dizide, dizideki elemanların toplamı daha büyük olan (dominant) sayıyı bul. Örnek: [16, 6, 3, 2, 1] → 16 (toplam 6+3+2+1=12, 16>12).
intermediatedef count_inversions(...)Bir dizide en sik gecen K elemani bul
Bir dizide en sik gecen K elemani bul. Siralama onemli degil.
intermediatedef top_k_frequent(...)İki Dizinin Kesişimi
İki dizinin kesişimini (ortak elemanlar) döndür. Sonuçtaki her eleman eşsiz olmalı, sıralama önemli değil.
beginnerdef intersection(...)En Uzun Consecutive Sequence
Bir dizideki en uzun ard arda gelen sayı dizisinin uzunluğunu bul. Örnek: [100, 4, 200, 1, 3, 2] → 4 ([1,2,3,4]).
intermediatedef longest_consecutive(...)Bir dizide n/2'den fazla geçen elemanı bul
Bir dizide n/2'den fazla geçen elemanı bul. Her zaman böyle bir eleman olduğu garanti edilir. Birden fazla varsa herhangi birini döndür.
intermediatedef majority_element(...)En Uzun Artan Alt Dizi Uzunluğu
Bir dizideki en uzun kesin artan altdizinin uzunluğunu bul. LIS — O(n log n) patience sorting veya O(n²) DP.
intermediatedef length_of_lis(...)Çakışan aralıkları birleştir
Çakışan aralıkları birleştir. Sonuç: çakışmayan, sıralı aralıklar. Girdi: [[1,3],[2,6],[8,10],[15,18]] -> [[1,6],[8,10],[15,18]]
intermediatedef merge_intervals(...)