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: 7
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 = 7Entrada: arr[] = {1, 2, 3}
Salida: 3
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>
7
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)