Programa C++ para el número de extremos locales en una array

Se le da una array de n elementos. Un extremo es un elemento que es mayor que sus dos vecinos o menor que sus dos vecinos. Tienes que calcular el número de extremos locales en una array dada. 
Nota: los elementos primero y último no son extremos.
Ejemplos: 
 

Input : a[] = {1, 5, 2, 5}
Output : 2

Input : a[] = {1, 2, 3}
Output : 0

Enfoque: para calcular el número de extremos, debemos verificar si un elemento es máximo o mínimo, es decir, si es mayor que sus dos vecinos o menor que ambos vecinos. Para esto, simplemente itere sobre la array y para cada elemento verifique su posibilidad de ser un extremo.
Nota: a[0] y a[n-1] tienen exactamente un vecino cada uno, no son mínimos ni máximos.
 

C++

// CPP to find number
// of extrema
#include <bits/stdc++.h>
using namespace std;
  
// function to find 
// local extremum
int extrema(int a[], int n)
{
    int count = 0;
  
    // start loop from position 1
    // till n-1
    for (int i = 1; i < n - 1; i++)
    {
  
        // only one condition
        // will be true at a  
        // time either a[i] 
        // will be greater than
        // neighbours or less 
        // than neighbours
  
        // check if a[i] is greater
        // than both its neighbours
        // then add 1 to x
        count += (a[i] > a[i - 1] && a[i] > a[i + 1]);
  
        // check if a[i] is 
        // less than both its 
        // neighbours, then 
        // add 1 to x
        count += (a[i] < a[i - 1] && a[i] < a[i + 1]);
    }
  
    return count;
}
  
// driver program
int main()
{
    int a[] = { 1, 0, 2, 1 };
    int n = sizeof(a) / sizeof(a[0]);
    cout << extrema(a, n);
    return 0;
}

Producción : 

2

Consulte el artículo completo sobre Número de extremos locales en una array para obtener más detalles.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *