Учитывая массив целых чисел 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). Поскольку входные данные отсортированы, мы должны использовать модифицированный двоичный поиск, чтобы определить диапазон заданной цели.

  • Выполните обычный бинарный поиск, чтобы выяснить, присутствует ли данная цель в массиве.
  • Если цель существует, теперь выполните модифицированный двоичный поиск, чтобы определить низкий и высокий индекс цели.