Условие задачи:
Дан отсортированный по неубыванию массив целых чисел nums и целевое значение target.
Найдите начальный и конечный индексы target в массиве.
Если target не найден — верните [-1, -1].
Алгоритм должен работать за O(log n) времени — то есть требуется бинарный поиск. Примеры:nums = [5,7,7,8,8,10], target = 8 → [3, 4]
nums = [5,7,7,8,8,10], target = 6 → [-1, -1]
nums = [], target = 0 → [-1, -1]
Представь, что у тебя есть длинная полка с игрушками, выстроенными по цвету и размеру: 🟥 🟥 🟦 🟦 🟦 🟩 🟩 🟩 🟩 🟪 Ты ищешь все зелёные игрушки.
Но тебе нельзя перебирать всё подряд — это займёт слишком много времени! Вместо этого ты умный: И вот — ты знаешь, где начинаются и где заканчиваются зелёные игрушки!
И ты сделал это очень быстро, даже если полка огромная Потому что в условии сказано: O(log n).
Если делать линейный поиск (for по всему массиву), это будет O(n) — и на больших данных LeetCode выдаст Time Limit Exceeded. Но массив отсортирован! Это наш ключ.
Мы можем использов