Menu
CoddyTech

Binary Search

Otrzymujesz listę liczb całkowitych nums, posortowaną rosnąco, bez powtarzających się wartości, oraz liczbę całkowitą target. Zwróć indeks target w nums, licząc od 0, lub -1, jeśli nie ma jej na liście. Dąż do złożoności czasowej O(log n), co oznacza, że nie możesz sprawdzić każdego elementu.

Funkcja

search(nums: integer-array, target: integer) → integer
numsinteger-array
posortowana lista różnych liczb całkowitych
targetinteger
wartość, której należy szukać
Zwracainteger
indeks target w nums albo -1, jeśli go tam nie ma

Ograniczenia

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums jest posortowana w ściśle rosnącej kolejności, więc każda wartość występuje raz.

Przykłady

Wejście
nums = [-7, -2, 0, 4, 9, 15, 23]target = 9
Wyjście
4
Wyjaśnienie
nums[4] ma wartość 9. Wyszukiwanie sprawdza indeks 3 (wartość 4 — za mała), następnie indeks 5 (wartość 15 — za duża), a potem indeks 4, gdzie znajduje 9.

lock icon+15 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Jeśli wartości w nums mogą się powtarzać, jak zwrócić pierwszy indeks target, nadal w czasie O(log n)?

Zresetuj kod
def search(nums, target):
    # Wpisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Wejście

nums = [-7, -2, 0, 4, 9, 15, 23]
target = 9

Oczekiwane

4