Matris Transpozu
beginnerO(log n) zaman, O(1) bellek
Bir matrisin transpozunu al (satırları sütun, sütunları satır yap).
İpuçları
- 💡 İpucu 1: zip(*matrix) sihirli bir araçtır — satırları transpose eder.
- 💡 İpucu 2: [list(row) for row in zip(*matrix)] ile sonucu listele.
- 💡 İpucu 3: Manuel yol: result[j][i] = matrix[i][j] ile iç içe döngü.
Yaklaşım & Açıklama
İkili arama (binary search), **sıralı** dizide hedef bulmanın en hızlı yoludur.
**Problem:** Sıralı [2, 5, 8, 12, 16, 23, 38, 56, 72, 91]'da 23'ü bul.
**Algoritma:**
```python
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
```
**Dikkat:** `(left + right) // 2` overflow riski (C/C++). Python'da sorun yok ama genel kültür: `left + (right - left) // 2`.
**Neden log n?** Her adımda arama alanı yarıya iner. 1 milyar eleman için max 30 karşılaştırma.
**Recursion limiti:** Python'da 1000. Çok derin arama için iterative tercih edilir.