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: 6
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>
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.