Menu
CoddyTech

Binary Search

Дан список целых чисел nums, отсортированный по возрастанию, без повторяющихся значений, и целое число target. Верните индекс target в nums, считая с 0, или -1, если его нет в списке. Стремитесь к времени выполнения O(log n), то есть вы не можете позволить себе проверять каждый элемент.

Функция

search(nums: integer-array, target: integer) → integer
numsinteger-array
отсортированный список различных целых чисел
targetinteger
значение, которое нужно найти
Возвращаетinteger
индекс target в nums или -1, если он отсутствует

Ограничения

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • Массив nums отсортирован в строго возрастающем порядке, поэтому каждое значение встречается один раз.

Примеры

Ввод
nums = [-7, -2, 0, 4, 9, 15, 23]target = 9
Вывод
4
Пояснение
nums[4] равно 9. Поиск проверяет индекс 3 (значение 4, слишком маленькое), затем индекс 5 (значение 15, слишком большое), а потом индекс 4, где находит 9.

lock icon+15 скрытых тестов при отправке

challenge icon

Дополнительный вопрос

Если значения в nums могут повторяться, как вернуть первый индекс target, по-прежнему за O(log n)?

Сбросить код
def search(nums, target):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Ввод

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

Ожидается

4