Valor máximo de |arr[0] – arr[1]| + |arr[1] – arr[2]| + … +|array[n – 2] – array[n – 1]| cuando los elementos son de 1 a n

Dada una array arr[] de tamaño n cuyos elementos son del rango [1, n] . La tarea es encontrar el valor máximo de |arr[0] – arr[1]| + |arr[1] – arr[2]| + … +|array[n – 2] – array[n – 1]| . Puede organizar los números en la array en cualquier orden.

Ejemplos:

Entrada: arr[] = {1, 2, 3, 4} 
Salida:
Organice la array de esta manera para el valor máximo, arr[] = {3, 1, 4, 2} 
|3 – 1| + |1 – 4| + |4 – 2| = 2 + 3 + 2 = 7

Entrada: arr[] = {1, 2, 3} 
Salida:
Organizamos la array como {2, 1, 3} 

Un enfoque simple es generar todas las permutaciones posibles . Calcule el valor de cada permutación y encuentre el valor máximo.
Enfoque Eficiente: 
La suma máxima con un elemento es 0. 
La suma máxima con dos elementos es 1 
La suma máxima con tres elementos es 3 (explicado arriba) 
La suma máxima con cuatro elementos es 7 (explicado arriba)
Se puede observar que para diferentes valores de n , un patrón para la suma máxima de diferencias absolutas es 0, 1, 3, 7, 11, 17, 23, 31, 39, 49,….. cuyo n -ésimo término es ((n * n / 2 ) – 1) .

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the maximum
// required value
int maxValue(int n)
{
    if (n == 1)
        return 0;
 
    return ((n * n / 2) - 1);
}
 
// Driver code
int main()
{
    int n = 4;
    cout << maxValue(n);
 
    return 0;
}

Java

// Java implementation of the approach
class GFG {
 
    // Function to return the maximum
    // required value
    static int maxValue(int n)
    {
        if (n == 1)
            return 0;
 
        return ((n * n / 2) - 1);
    }
 
    // Driver code
    public static void main(String args[])
    {
        int n = 4;
        System.out.print(maxValue(n));
    }
}

Python

# Python3 implementation of the approach
 
# Function to return the maximum
# required value
def maxValue(n):
    if (n == 1):
        return 0
     
    return (( n * n // 2 ) - 1 )
 
# Driver code
n = 4
print(maxValue(n))

C#

// C# implementation of the approach
using System;
class GFG {
 
    // Function to return the maximum
    // required value
    static int maxValue(int n)
    {
        if (n == 1)
            return 0;
 
        return ((n * n / 2) - 1);
    }
 
    // Driver code
    public static void Main()
    {
        int n = 4;
        Console.WriteLine(maxValue(n));
    }
}

PHP

<?php
// Function to return the maximum
// required value
function maxValue($n)
{
    if ($n == 1)
        return 0;
 
    return (($n * $n / 2) - 1);
}
 
// Driver code
$n = 4;
echo maxValue($n);
?>

Javascript

<script>
// Javascript implementation of the approach
 
// Function to return the maximum
// required value
function maxValue(n)
{
    if (n == 1)
        return 0;
    return (parseInt(n * n / 2) - 1);
}
 
// Driver code
var n = 4;
document.write(maxValue(n));
 
// This code is contributed by noob2000.
</script>
Producción

7

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)
 

Publicación traducida automáticamente

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