Menu
CoddyTech

Find Peak Element

Массив nums сначала возрастает, а затем убывает: каждое значение больше предыдущего до некоторого индекса, а каждое значение после этого индекса меньше предыдущего. Любая из частей может быть пустой, поэтому массив может только возрастать или только убывать. Значение в точке поворота — это пик, единственное значение, которое больше каждого из соседних с ним значений.

Верни индекс пика за время O(log n).

Функция

findPeakElement(nums: integer-array) → integer
numsinteger-array
значения, повышающиеся до одного пика, а затем снижающиеся
Возвращаетinteger
индекс пика

Ограничения

  • 1 ≤ nums.length ≤ 5000
  • -106 ≤ nums[i] ≤ 106
  • nums[i] != nums[i+1] для каждого допустимого i.
  • nums строго возрастает до одного индекса и строго убывает после него, поэтому существует ровно один пик.

Примеры

Ввод
nums = [2, 5, 9, 4, 1]
Вывод
2
Пояснение
Значения поднимаются через 2, 5 и 9, затем опускаются через 4 и 1. Поворотная точка — 9, индекс 2.
challenge icon

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

В сетке, где никакие две соседние ячейки не равны, пик — это ячейка, которая больше каждой из максимум четырёх соседних ячеек. Сможешь найти такой пик, не прочитав каждую ячейку?

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

Тест #1

Тест #2

Тест #3

Аргумент

nums = [2, 5, 9, 4, 1]

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

2