Учитывая массив целых чисел nums
, отсортированных в порядке возрастания, найдите начальную и конечную позицию данного значения target
.
Сложность вашего алгоритма во время выполнения должна быть порядка O(log n).
Если цель не найдена в массиве, вернуть [-1, -1]
.
Пример 1:
Input: nums = [5,7,7,8,8,10]
, target = 8
Output: [3,4]
Пример 2:
Input: nums = [5,7,7,8,8,10]
, target = 6
Output: [-1,-1]
Решение :
Итеративное решение простое, но требует O (n). Поскольку входные данные отсортированы, мы должны использовать модифицированный двоичный поиск, чтобы определить диапазон заданной цели.
- Выполните обычный бинарный поиск, чтобы выяснить, присутствует ли данная цель в массиве.
- Если цель существует, теперь выполните модифицированный двоичный поиск, чтобы определить низкий и высокий индекс цели.