Menu
CoddyTech

Search a 2D Matrix

Otrzymujesz siatkę liczb całkowitych matrix o m wierszach i n kolumnach oraz liczbę całkowitą target. Każdy wiersz jest posortowany rosnąco, a pierwsza wartość w każdym wierszu jest większa od ostatniej wartości w wierszu powyżej. Zwróć true, jeśli target znajduje się w siatce, a w przeciwnym razie false, w czasie O(log(m × n)).

Funkcja

searchMatrix(matrix: integer-2d-array, target: integer) → boolean
matrixinteger-2d-array
siatka, podana jako lista wierszy, uporządkowana wiersz po wierszu
targetinteger
wartość, której należy szukać
Zwracaboolean
true, jeśli target znajduje się w siatce, w przeciwnym razie false

Ograniczenia

  • 1 ≤ m, n ≤ 100, gdzie m = matrix.length i n = matrix[i].length
  • Każdy wiersz ma tę samą długość n.
  • -104 ≤ matrix[i][j], target ≤ 104
  • Każdy wiersz jest uporządkowany ściśle rosnąco, a pierwsza wartość każdego wiersza jest większa od ostatniej wartości poprzedniego wiersza.

Przykłady

Wejście
matrix = [[2, 5, 9, 14], [17, 21, 26, 30], [33, 38, 45, 52]]target = 26
Wyjście
true
Wyjaśnienie
Czytając wiersz po wierszu, 12 wartości tworzy jedną posortowaną listę. Wyszukiwanie binarne na pozycjach od 0 do 11 sprawdza 21 na pozycji 5 (za mała), 33 na pozycji 8 (za duża), a następnie znajduje 26 na pozycji 6.
challenge icon

Pytanie dodatkowe

Załóżmy, że wiersze mogą mieć różną długość, ale nadal są posortowane od początku do końca. Jak zamienić pozycję na wiersz i kolumnę oraz jaki byłby koszt wyszukiwania?

Zresetuj kod
def searchMatrix(matrix, target):
    # Wpisz kod tutaj

Test #1

Test #2

Argumenty

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

Oczekiwany wynik

true