Elemento máximo en una array tal que su producto de elemento anterior y siguiente es máximo

Dada una array arr[] de N enteros, la tarea es imprimir el elemento más grande entre la array de modo que el producto de su elemento anterior y siguiente sea máximo.
Ejemplos: 
 

Entrada: arr[] = {5, 6, 4, 3, 2} 
Salida:
El producto de los elementos siguiente y anterior 
para cada elemento de la array dada es: 
5 -> 2 * 6 = 12 
6 -> 5 * 4 = 20 
4 -> 6 * 3 = 18 
3 -> 4 * 2 = 8 
2 -> 3 * 5 = 15 
De estos 20 es el máximo. 
Por lo tanto, 6 es la respuesta.
Entrada: arr[] = {9, 2, 3, 1, 5, 17} 
Salida: 17 
 

Enfoque: para cada elemento de la array, encuentre el producto de su elemento anterior y siguiente. El elemento que tiene el producto máximo es el resultado. Si dos elementos tienen el mismo producto de los elementos siguientes y anteriores, elija el elemento mayor entre ellos.
A continuación se muestra la implementación del enfoque anterior: 
 

C++

#include<bits/stdc++.h>
using namespace std;
 
// Function to return the largest element
// such that its previous and next
// element product is maximum
int maxElement(int a[], int n)
{
    if (n < 3)
        return -1;
 
    int maxElement = a[0];
    int maxProd = a[n - 1] * a[1];
 
    for (int i = 1; i < n; i++)
    {
 
        // Calculate the product of the previous
        // and the next element for
        // the current element
        int currProd = a[i - 1] * a[(i + 1) % n];
 
        // Update the maximum product
        if (currProd > maxProd)
        {
            maxProd = currProd;
            maxElement = a[i];
        }
 
        // If current product is equal to the
        // current maximum product then
        // choose the maximum element
        else if (currProd == maxProd)
        {
            maxElement = max(maxElement, a[i]);
        }
    }
 
    return maxElement;
}
 
// Driver code
int main()
{
    int a[] = { 5, 6, 4, 3, 2};
    int n = sizeof(a)/sizeof(a[0]);
    cout << maxElement(a, n);
    return 0;
}
    

Java

// Java implementation of the approach
class GFG {
 
    // Function to return the largest element
    // such that its previous and next
    // element product is maximum
    static int maxElement(int a[], int n)
    {
        if (n < 3)
            return -1;
 
        int maxElement = a[0];
        int maxProd = a[n - 1] * a[1];
 
        for (int i = 1; i < n; i++) {
 
            // Calculate the product of the previous
            // and the next element for
            // the current element
            int currProd = a[i - 1] * a[(i + 1) % n];
 
            // Update the maximum product
            if (currProd > maxProd) {
                maxProd = currProd;
                maxElement = a[i];
            }
 
            // If current product is equal to the
            // current maximum product then
            // choose the maximum element
            else if (currProd == maxProd) {
                maxElement = Math.max(maxElement, a[i]);
            }
        }
 
        return maxElement;
    }
 
    // Driver code
    public static void main(String[] args)
    {
        int[] a = { 5, 6, 4, 3, 2 };
        int n = a.length;
        System.out.println(maxElement(a, n));
    }
}

Python3

# Function to return the largest element
# such that its previous and next
# element product is maximum
def maxElement(a, n):
 
    if n < 3:
        return -1
    maxElement = a[0]
    maxProd = a[n - 1] * a[1]
 
    for i in range(1, n):
         
        # Calculate the product of the previous
        # and the next element for
        # the current element
 
        currprod = a[i - 1] * a[(i + 1) % n]
 
        if currprod > maxProd:
            maxProd = currprod
            maxElement = a[i]
             
        # If current product is equal to the
        # current maximum product then
        # choose the maximum element
        elif currprod == maxProd:
            maxElement = max(maxElement, a[i])
    return maxElement
 
# Driver code
 
a = [5, 6, 4, 3, 2]
n = len(a)#sizeof(a[0])
print(maxElement(a, n))
 
# This code is contributed by mohit kumar 29

C#

// C# implementation of the approach
using System;
 
class GFG
{
 
    // Function to return the largest element
    // such that its previous and next
    // element product is maximum
    static int maxElement(int []a, int n)
    {
        if (n < 3)
            return -1;
 
        int maxElement = a[0];
        int maxProd = a[n - 1] * a[1];
 
        for (int i = 1; i < n; i++)
        {
 
            // Calculate the product of the previous
            // and the next element for
            // the current element
            int currProd = a[i - 1] * a[(i + 1) % n];
 
            // Update the maximum product
            if (currProd > maxProd)
            {
                maxProd = currProd;
                maxElement = a[i];
            }
 
            // If current product is equal to the
            // current maximum product then
            // choose the maximum element
            else if (currProd == maxProd)
            {
                maxElement = Math.Max(maxElement, a[i]);
            }
        }
 
        return maxElement;
    }
 
    // Driver code
    public static void Main()
    {
        int[] a = { 5, 6, 4, 3, 2 };
        int n = a.Length;
        Console.WriteLine(maxElement(a, n));
    }
}
 
// This code is contributed by AnkitRai01

Javascript

<script>
// Java script implementation of the approach
 
    // Function to return the largest element
    // such that its previous and next
    // element product is maximum
    function maxElement(a,n)
    {
        if (n < 3)
            return -1;
 
        let maxElement = a[0];
        let maxProd = a[n - 1] * a[1];
 
        for (let i = 1; i < n; i++) {
 
            // Calculate the product of the previous
            // and the next element for
            // the current element
            let currProd = a[i - 1] * a[(i + 1) % n];
 
            // Update the maximum product
            if (currProd > maxProd) {
                maxProd = currProd;
                maxElement = a[i];
            }
 
            // If current product is equal to the
            // current maximum product then
            // choose the maximum element
            else if (currProd == maxProd) {
                maxElement = Math.max(maxElement, a[i]);
            }
        }
 
        return maxElement;
    }
 
    // Driver code   
        let a = [ 5, 6, 4, 3, 2 ];
        let n = a.length;
        document.write(maxElement(a, n));
     
// This code is contributed by sravan kumar G
</script>
Producción: 

6

 

Complejidad temporal: O(n), ya que se ejecuta un ciclo por una vez de 1 a (n – 1).
Espacio Auxiliar: O(1), ya que no se ha tomado ningún espacio extra.

Publicación traducida automáticamente

Artículo escrito por nidhiva 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 *