Parece complicado, mas na real é bem simples, somente sendo necessário um pouco de paciência.
Descrição
Solução
Para cada magnitude de uma amostra, para considerarmos elas um pico, basta que ela cumpra uma dessas duas condições:
A magnitude seja menor que seus dois vizinhos;
A magnitude seja maior que seus dois vizinhos.
Sendo que, como se trata de um loop, o vizinho à esquerda da primeira magnitude é a última e o vizinho à direita da última magnitude é a primeira. Confira a página Deslocar dentro de um intervalo [0, N - 1] para entender melhor porque as operações (i + 1) % N e ((i - 1) + N) % N funcionam para acessarmos os vizinhos da direita e da esquerda respectivamente.