Menu
CoddyTech

Find Peak Element

Tablica nums rośnie, a następnie maleje: każda wartość jest większa od poprzedniej aż do pewnego indeksu, a każda wartość za tym indeksem jest mniejsza od poprzedniej. Każda z tych części może być pusta, więc tablica może tylko rosnąć lub tylko maleć. Wartość na indeksie zwrotnym to maksimum — jedyna wartość większa od każdego ze swoich sąsiadów.

Zwróć indeks maksimum w czasie O(log n).

Funkcja

findPeakElement(nums: integer-array) → integer
numsinteger-array
wartości, które rosną do jednego szczytu, a następnie spadają
Zwracainteger
indeks szczytu

Ograniczenia

  • 1 ≤ nums.length ≤ 5000
  • -106 ≤ nums[i] ≤ 106
  • nums[i] != nums[i+1] dla każdego poprawnego i.
  • nums ściśle rośnie aż do jednego indeksu, a potem ściśle maleje, więc istnieje dokładnie jeden szczyt.

Przykłady

Wejście
nums = [2, 5, 9, 4, 1]
Wyjście
2
Wyjaśnienie
Wartości rosną kolejno do 2, 5 i 9, a następnie maleją do 4 i 1. Zmiana kierunku następuje przy 9, indeksie 2.
challenge icon

Pytanie dodatkowe

W siatce, w której żadne dwa sąsiednie pola nie są równe, szczyt to pole większe od maksymalnie czterech sąsiadów. Czy potrafisz go znaleźć bez odczytywania każdego pola?

Zresetuj kod
def findPeakElement(nums):
    # Napisz tutaj kod

Test #1

Test #2

Test #3

Argument

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

Oczekiwany wynik

2