Код Middle Бинарный поиск обновлено

Левая граница

Условие

Массив отсортирован. Верни индекс первого элемента, который >= target (если таких нет - длину массива).

Примеры

lowerBound([1, 3, 3, 5], 3) // 1
lowerBound([1, 2], 5) // 2
lowerBound([], 1) // 0

Как подойти

Второй канонический шаблон: полуинтервал [lo, hi), while (lo < hi), hi = mid (а не mid-1). Им решается всё семейство «первый элемент, удовлетворяющий условию», включая бинпоиск по ответу.

Подсказки: 2
  1. Здесь удобнее полуинтервал [lo, hi): hi = длина, цикл while (lo < hi).
  2. При подходящем mid не отбрасывай его - он сам может быть ответом.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.