Menu
CoddyTech

Find Peak Element

L'array nums prima cresce e poi decresce: ogni valore è maggiore di quello precedente fino a un certo indice, e ogni valore dopo quell'indice è minore di quello precedente. Una delle due parti può essere vuota, quindi l'array può solo crescere o solo decrescere. Il valore all'indice di svolta è il picco, l'unico valore maggiore di tutti i suoi vicini.

Restituisci l'indice del picco in tempo O(log n).

Funzione

findPeakElement(nums: integer-array) → integer
numsinteger-array
i valori, che aumentano fino a raggiungere un picco e poi diminuiscono
Restituisceinteger
l'indice del picco

Vincoli

  • 1 ≤ nums.length ≤ 5000
  • -106 ≤ nums[i] ≤ 106
  • nums[i] != nums[i+1] per ogni i valido.
  • nums aumenta strettamente fino a un indice e diminuisce strettamente dopo di esso, quindi c'è esattamente un picco.

Esempi

Input
nums = [2, 5, 9, 4, 1]
Output
2
Spiegazione
I valori aumentano passando per 2, 5 e 9, poi diminuiscono passando per 4 e 1. L’inversione avviene in corrispondenza di 9, indice 2.
challenge icon

Per approfondire

In una griglia in cui non ci sono due celle adiacenti uguali, un picco è una cella più grande delle sue fino a quattro celle vicine. Riesci a trovarne uno senza leggere tutte le celle?

Ripristina il codice
def findPeakElement(nums):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomento

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

Output atteso

2