📌  相关文章
📜  数组中的最大元素,以使其上一个和下一个元素乘积最大

📅  最后修改于: 2021-05-06 08:12:45             🧑  作者: Mango

给定一个由N个整数组成的数组arr [] ,任务是打印该数组中最大的元素,以使其上一个和下一个元素乘积最大。

例子:

方法:对于数组的每个元素,找到其上一个和下一个元素的乘积。结果是具有最大乘积的元素。如果两个元素的下一个和上一个元素的乘积相等,则从中选择更大的元素。

下面是上述方法的实现:

C++
#include
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


输出:
6