Код 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
- Здесь удобнее полуинтервал [lo, hi): hi = длина, цикл while (lo < hi).
- При подходящем mid не отбрасывай его - он сам может быть ответом.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.