Menu
CoddyTech

Find Peak Element

Le tableau nums monte puis descend : chaque valeur est plus grande que la précédente jusqu’à un certain indice, et chaque valeur après cet indice est plus petite que la précédente. L’une des deux parties peut être vide, le tableau peut donc uniquement monter ou uniquement descendre. La valeur à l’indice de retournement est le pic, la seule valeur plus grande que chacun de ses voisins.

Retourne l’indice du pic en O(log n).

Fonction

findPeakElement(nums: integer-array) → integer
numsinteger-array
les valeurs augmentent jusqu’à un pic, puis diminuent
Renvoieinteger
l’indice du pic

Contraintes

  • 1 ≤ nums.length ≤ 5000
  • -106 ≤ nums[i] ≤ 106
  • nums[i] != nums[i+1] pour chaque i valide.
  • nums augmente strictement jusqu’à un indice et diminue strictement après celui-ci, donc il y a exactement un sommet.

Exemples

Entrée
nums = [2, 5, 9, 4, 1]
Sortie
2
Explication
Les valeurs augmentent en passant par 2, 5 et 9, puis diminuent en passant par 4 et 1. Le changement de direction se produit à 9, à l’indice 2.
challenge icon

Pour aller plus loin

Dans une grille où aucune cellule voisine n’est égale à une autre, un pic est une cellule plus grande que ses quatre voisines au maximum. Peux-tu en trouver un sans lire toutes les cellules ?

Réinitialiser le code
def findPeakElement(nums):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Argument

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

Résultat attendu

2