🎯 LeetCode — Two Sum Çözümü
C# ile Adım Adım, Öğretici ve Açıklamalı Rehber
🎯 LeetCode — Two Sum Çözümü
C# ile Adım Adım, Öğretici ve Açıklamalı Rehber
LeetCode’un en popüler sorularından biri olan Two Sum, algoritma mantığını, döngü kullanımını ve indeks yönetimini kavratmak için harika bir başlangıçtır.
Bu yazıda:
- Soruyu anlamayı
- Çözüm mantığını kurmayı
- C# kodunu yazmayı
- Her satırı tek tek açıklamayı
öğreneceksin.
🧩 Problem Tanımı
Bize bir adet integer dizisi (nums) ve bir adet hedef değer (target) veriliyor.
Görevimiz:
➡️ Dizideki iki sayının toplamı hedefe eşitse, bu iki sayının indekslerini döndürmek.
Örnek:
nums = [2,7,11,15]
target = 9
Çözüm:
[0, 1]
çünkü: nums[0] + nums[1] = 2 + 7 = 9
Kurallar:
- Aynı eleman iki kez kullanılamaz
- Her testin tek bir çözümü olduğu garanti edilir
- Cevabı herhangi bir sırada döndürebilirsiniz
🧠 Neden Bu Problem Önemli?
Bu soru, algoritma düşünme becerisini ölçer:
- Diziyi nasıl gezeceğini bilmek
- İki indeks arasındaki ilişkiyi kurmak
- Basit matematiksel koşulları kontrol etmek
- Return mantığını anlamak
Ve klasik bir O(n²) brute-force çözümü ile başlanır.
🔍 Çözüm Mantığı (Brute-Force)
Temel fikir:
- Dizideki her eleman için (
i) - Ondan sonraki tüm elemanları (
j) - Toplamı
targetmı diye kontrol et - Evetse → iki indeksini döndür
Bunun adı: ➡️ Çift döngü yaklaşımı ➡️ Zaman karmaşıklığı: O(n²)
💻 Çözüm Kodu (C#)
Aşağıdaki kod, Two Sum probleminin brute-force çözümünü içerir:
public class Solution {
public int[] TwoSum(int[] nums, int target)
{
// Dış döngü: dizideki her elemanı gez
for (int i = 0; i < nums.Length; i++)
{
// İç döngü: i'nin bir sonrasından başlayarak devam et
for (int j = i + 1; j < nums.Length; j++)
{
// Eğer iki elemanın toplamı hedefe eşitse
if (nums[i] + nums[j] == target)
{
// İndeksleri döndür ve fonksiyondan çık
return new int[] { i, j };
}
}
}
// Buraya asla düşmez (LeetCode garantisi var)
return new int[] { };
}
}
🧽 Satır Satır Açıklama (Detaylı)
public class Solution {
LeetCode tüm kodu bu class içinde ister.
public int[] TwoSum(int[] nums, int target)
- Geri dönüş tipi: int dizisi
- Parametreler:
nums: verilen sayı listesitarget: ulaşılması gereken toplam
🔵 Dış Döngü
for (int i = 0; i < nums.Length; i++)
for (int i = 0; i < nums.Length; i++) i = 0 ile başlıyoruz.
Amaç: dizideki her elemanı birinci sayı olarak seçmek.
nums.Length → dizinin boyutu.
Döngü 0’dan son elemana kadar gider.
🔵 İç Döngü
for (int j = i + 1; j < nums.Length; j++)
jher zaman i'nin bir sonrasından başlar.- Böylece:
- Aynı elemanı iki kez kullanmayız.
- Gereksiz tekrarları önleriz.
- Bu döngü,
iiçin ikinci sayıyı arıyor.
🔵 Kontrol
if (nums[i] + nums[j] == target)
- Seçilen iki sayı hedef toplamı veriyor mu?
nums[i]→ birinci sayınums[j]→ ikinci sayı- Toplam
targetise çözümü bulduk.
🔵 Çözümü Döndürme
return new int[] { i, j };
return new int[] { i, j }; İki indeksi içeren bir dizi döndürüyoruz.
Method burada tamamen sona erer.
🔵 Son Return
return new int[] { };
Normalde buraya hiç düşmeyiz. LeetCode garanti ediyor: her zaman çözüm var.
Ama C# derleyicisi “method her durumda bir şey döndürmeli” dediği için ekliyoruz.
🧠 Zaman Karmaşıklığı
- Dış döngü → n tekrar
- İç döngü → ortalama n/2 tekrar
- Toplam → O(n²)
Daha iyi çözüm var mı? Evet! HashMap (Dictionary) ile O(n).
🎉 Sonuç
Two Sum, algoritma düşünmenin temeli olan bir problemdir. Bu çözüm:
- Çift döngülü brute-force yaklaşımı
- Basit indeks kullanımı
- Koşul kontrolü
- C# return mantığı
gibi kavramları çok iyi kavratır.
메타데이터
- post_id
- df31fca30a4f
- slug
- leetcode-two-sum-çözümü-df31fca30a4f
- url
- https://medium.com/@hedaguler25/leetcode-two-sum-%C3%A7%C3%B6z%C3%BCm%C3%BC-df31fca30a4f
- canonical_url
- https://medium.com/@hedaguler25/leetcode-two-sum-%C3%A7%C3%B6z%C3%BCm%C3%BC-df31fca30a4f
- author_url
- https://medium.com/@hedaguler25
- status
- ok
- fetched_at
- 2026-07-14 14:24:44