Menu
CoddyTech

Search a 2D Matrix

Size m satır ve n sütun olan bir tamsayı ızgarası matrix ve bir tamsayı target veriliyor. Her satır artan sırada sıralıdır ve her satırın ilk değeri, üstündeki satırın son değerinden büyüktür. target ızgarada görünüyorsa true, aksi takdirde false döndürün; bunu O(log(m × n)) zamanda yapın.

Fonksiyon

searchMatrix(matrix: integer-2d-array, target: integer) → boolean
matrixinteger-2d-array
satırların listesi olarak verilen ve satır satır sıralanan ızgara
targetinteger
aranacak değer
Döndürürboolean
hedef ızgaradaysa doğru, aksi takdirde yanlış

Kısıtlar

  • 1 ≤ m, n ≤ 100, burada m = matrix.length ve n = matrix[i].length
  • Her satırın uzunluğu n ile aynıdır.
  • -104 ≤ matrix[i][j], target ≤ 104
  • Her satır kesin olarak artan sırada sıralanmıştır ve her satırın ilk değeri, önceki satırın son değerinden büyüktür.

Örnekler

Girdi
matrix = [[2, 5, 9, 14], [17, 21, 26, 30], [33, 38, 45, 52]]target = 26
Çıktı
true
Açıklama
Satır satır okunduğunda, 12 değer sıralı tek bir listedir. 0 ile 11 arasındaki konumlarda yapılan ikili arama, 5. konumda 21'i kontrol eder (çok küçük), 8. konumda 33'ü kontrol eder (çok büyük), ardından 6. konumda 26'yı bulur.
challenge icon

Ek soru

Satırların uzunlukları farklı olsaydı, ancak yine de baştan sona sıralı olsalardı, bir konumu satır ve sütuna nasıl dönüştürürdün ve aramanın maliyeti ne olurdu?

Kodu sıfırla
def searchMatrix(matrix, target):
    # Kodu buraya yazın

Test #1

Test #2

Argümanlar

matrix = [[2, 5, 9, 14], [17, 21, 26, 30], [33, 38, 45, 52]]
target = 26

Beklenen Çıktı

true