Menu
CoddyTech

Find Peak Element

O array nums sobe e depois desce: cada valor é maior que o anterior até certo índice, e cada valor após esse índice é menor que o anterior. Qualquer uma das partes pode estar vazia, então o array pode apenas subir ou apenas descer. O valor no índice de virada é o pico, o único valor maior que todos os seus vizinhos.

Retorne o índice do pico em tempo O(log n).

Função

findPeakElement(nums: integer-array) → integer
numsinteger-array
os valores aumentam até atingir um pico e depois diminuem
Retornainteger
o índice do pico

Restrições

  • 1 ≤ nums.length ≤ 5000
  • -106 ≤ nums[i] ≤ 106
  • nums[i] != nums[i+1] para todo i válido.
  • nums aumenta estritamente até um índice e diminui estritamente depois dele, então há exatamente um pico.

Exemplos

Entrada
nums = [2, 5, 9, 4, 1]
Saída
2
Explicação
Os valores sobem passando por 2, 5 e 9, depois caem passando por 4 e 1. A inversão ocorre em 9, índice 2.
challenge icon

Para ir além

Em uma grade na qual nenhuma célula vizinha é igual a outra, um pico é uma célula maior que suas até quatro vizinhas. Você consegue encontrar um sem ler todas as células?

Redefinir código
def findPeakElement(nums):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumento

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

Saída Esperada

2