SprintCode.pro

Подготовка к алгоритмическим задачам

Super

Binary Search (Бинарный поиск)

Описание: Дан отсортированный по возрастанию массив nums и число target. Верните индекс target, если он есть в массиве, иначе верните -1.

Пример 1:

Вход: nums = [-1,0,3,5,9,12], target = 9
Выход: 4
Объяснение: Число 9 стоит на позиции 4

Пример 2:

Вход: nums = [-1,0,3,5,9,12], target = 2
Выход: -1
Объяснение: Числа 2 в массиве нет

Ограничения:

1 <= nums.length <= 10⁴

Массив отсортирован по возрастанию

Все значения уникальны

Рекомендуемая временная и пространственная сложность

Стремитесь к решению за O(log n) по времени и O(1) по памяти.


Подсказка 1

Линейный поиск даст O(n). Массив отсортирован — используйте это.


Подсказка 2

Сравните середину отрезка с целью. Если середина меньше — ответ правее, иначе левее.


Подсказка 3

Внимательно с границами: цикл идёт пока left <= right, а середину считайте как left + (right - left) / 2, чтобы избежать переполнения.

Базовая задача на бинарный поиск в отсортированном массиве. Учит работать с границами отрезка, избегать ошибок на единицу и понимать, откуда берётся логарифмическая сложность.

Входные параметры :

[-1,0,3,5,9,12], 9

Ожидаемый результат

4