Menu
CoddyTech

Find First and Last Position of Element in Sorted Array

Дан список целых чисел nums, отсортированный в неубывающем порядке, поэтому значения могут повторяться, и целое число target. Верните список из двух индексов, считая с 0: первой и последней позиции, в которой встречается target. Если target нет в списке, верните [-1, -1]. Стремитесь к временной сложности O(log n).

Функция

searchRange(nums: integer-array, target: integer) → integer-array
numsinteger-array
отсортированный список целых чисел, в котором значения могут повторяться
targetinteger
значение, которое нужно найти
Возвращаетinteger-array
первый и последний индексы target или [-1, -1], если он отсутствует

Ограничения

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums отсортирован в порядке неубывания.

Примеры

Ввод
nums = [3, 5, 5, 5, 8, 9, 9, 12]target = 5
Вывод
[1, 3]
Пояснение
Три копии числа 5 находятся по индексам 1, 2 и 3, поэтому последовательность начинается с индекса 1 и заканчивается индексом 3. По индексу 0 находится 3, а по индексу 4 — 8, поэтому последовательность не может продолжаться дальше.
challenge icon

Дополнительный вопрос

Если к одному и тому же списку поступают тысячи запросов для разных целей, может ли один предварительный проход по нему сделать каждый запрос быстрее, чем O(log n)?

Сбросить код
def searchRange(nums, target):
    # Напишите код здесь

Тест #1

Тест #2

Аргументы

nums = [3, 5, 5, 5, 8, 9, 9, 12]
target = 5

Ожидаемый вывод

[1, 3]