Menu
CoddyTech

Search a 2D Matrix

SedangBinary searchpython iconjava iconcpp iconc iconjs icon+10

Kamu mendapatkan grid bilangan bulat matrix dengan m baris dan n kolom, serta bilangan bulat target. Setiap baris diurutkan dari nilai terkecil ke terbesar, dan nilai pertama setiap baris lebih besar daripada nilai terakhir baris di atasnya. Kembalikan true jika target muncul di grid dan false jika tidak, dalam waktu O(log(m × n)).

Fungsi

searchMatrix(matrix: integer-2d-array, target: integer) → boolean
matrixinteger-2d-array
kisi, yang diberikan sebagai list baris, diurutkan baris demi baris
targetinteger
nilai yang dicari
Mengembalikanboolean
true jika target berada di grid, false jika tidak

Batasan

  • 1 ≤ m, n ≤ 100, dengan m = matrix.length dan n = matrix[i].length
  • Setiap baris memiliki panjang yang sama, yaitu n.
  • -104 ≤ matrix[i][j], target ≤ 104
  • Setiap baris diurutkan secara menaik ketat, dan nilai pertama setiap baris lebih besar daripada nilai terakhir baris sebelumnya.

Contoh

Input
matrix = [[2, 5, 9, 14], [17, 21, 26, 30], [33, 38, 45, 52]]target = 26
Output
true
Penjelasan
Baca baris demi baris, 12 nilai tersebut membentuk satu list terurut. Pencarian biner pada posisi 0 hingga 11 memeriksa 21 di posisi 5 (terlalu kecil), 33 di posisi 8 (terlalu besar), lalu menemukan 26 di posisi 6.
challenge icon

Pertanyaan lanjutan

Misalkan baris-barisnya memiliki panjang yang berbeda, tetapi tetap terurut dari awal hingga akhir. Bagaimana kamu mengubah posisi menjadi baris dan kolom, dan berapa biaya pencariannya?

Reset kode
def searchMatrix(matrix, target):
    # Tulis kodemu di sini

Tes #1

Tes #2

Argumen

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

Output yang diharapkan

true