LeetCode 74 · Search a 2D Matrix · Medium
Çözümün her adımını burada izleyebilirsin. Aranacak sayıyı seç, İleri'ye bas; matriste hangi hücreye bakıldığını ve kodun hangi satırının çalıştığını gör.
1 ile 100 arasında bir sayı tuttum; her tahmininde “daha büyük” ya da “daha küçük” diyorum. En akıllıca tahmin hep ortadan yapılır, çünkü her cevap kalan sayıların yarısını eler. Binary search budur.
Her satır sıralı ve her satır, öncekinin son sayısından büyük başlıyor. Satırları uç uca eklersen tek bir sıralı liste çıkar: 1, 3, 5, 7, 10, 11, 16, 20, 23, 30, 34, 60. Tahmin oyununu bu listede oynayabiliriz.
Listenin k'inci sayısı matriste satır = k / 4, sütun = k % 4 konumunda (4 = sütun sayısı). / küsuratı atar, % kalanı verir. Örneğin 9 / 4 = 2 ve 9 % 4 = 1, yani 9 numaralı sayı matrix[2][1] = 30.
-10000 ile 10000 arasında bir tam sayı yaz.
Matris (köşedeki küçük sayı, hücrenin listedeki sırası)
Aynı sayılar, tek sıra halinde
Değişkenler
Kod (Solution.cs içindeki metot)
Her bakış, kalan aralığı yarıya indiriyor: 12 → 6 → 3 → 1. Bu 12 sayılık örnekte en fazla 4 bakış yeter. LeetCode'daki en büyük matriste (100 × 100 = 10.000 hücre) bile en fazla 14 bakış yeter. Bütün hücreleri tek tek gezseydik bu, 10.000 bakış demekti.