Dada una array arr de enteros positivos de tamaño N , la tarea es encontrar el costo mínimo para hacer de esta array una permutación de los primeros N números naturales, donde el costo de incrementar o disminuir un elemento en 1 es 1.
Ejemplos:
Entrada: arr[] = {1, 1, 7, 4}
Salida: 5
Explicación:
Realice la operación de incremento en 1 una vez
Realice la operación de decremento en 7 cuatro veces
Array resultante = {1, 2, 3, 4}
Entrada: arr[ ] = {1, 2, 3, 4, 5}
Salida: 0
Explicación:
la array ya es una permutación.
Acercarse:
- Ordenar el elemento de la array en orden creciente
- Atraviesa la array ordenada:
- Compruebe si el elemento en el i-ésimo índice (0 ≤ i < N) es igual a i + 1 .
- Si no, hágalo igual e incremente la diferencia entre los dos como el costo de esta operación.
- Cuando se complete el recorrido, imprima el costo total de las operaciones realizadas.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to calculate minimum cost // to make an Array a permutation // of first N natural numbers #include <bits/stdc++.h> using namespace std; // Function to calculate minimum cost // for making permutation of size N int make_permutation(int arr[], int n) { // sorting the array in ascending order sort(arr, arr + n); // To store the required answer int ans = 0; // Traverse the whole array for (int i = 0; i < n; i++) ans += abs(i + 1 - arr[i]); // Return the required answer return ans; } // Driver code int main() { int arr[] = { 5, 3, 8, 1, 1 }; int n = sizeof(arr) / sizeof(arr[0]); // Function call cout << make_permutation(arr, n); }
Java
// Java program to calculate minimum cost // to make an Array a permutation // of first N natural numbers import java.util.*; class GFG{ // Function to calculate minimum cost // for making permutation of size N static int make_permutation(int arr[], int n) { // sorting the array in ascending order Arrays.sort(arr); // To store the required answer int ans = 0; // Traverse the whole array for (int i = 0; i < n; i++) ans += Math.abs(i + 1 - arr[i]); // Return the required answer return ans; } // Driver code public static void main(String[] args) { int arr[] = { 5, 3, 8, 1, 1 }; int n = arr.length; // Function call System.out.print(make_permutation(arr, n)); } } // This code is contributed by Rajput-Ji
Python3
# Python3 program to calculate minimum cost # to make an Array a permutation # of first N natural numbers # Function to calculate minimum cost # for making permutation of size N def make_permutation(arr, n) : # sorting the array in ascending order arr.sort(); # To store the required answer ans = 0; # Traverse the whole array for i in range(n) : ans += abs(i + 1 - arr[i]); # Return the required answer return ans; # Driver code if __name__ == "__main__" : arr = [ 5, 3, 8, 1, 1 ]; n = len(arr); # Function call print(make_permutation(arr, n)); # This code is contributed by Yash_R
C#
// C# program to calculate minimum cost // to make an Array a permutation // of first N natural numbers using System; class GFG{ // Function to calculate minimum cost // for making permutation of size N static int make_permutation(int []arr, int n) { // sorting the array in ascending order Array.Sort(arr); // To store the required answer int ans = 0; // Traverse the whole array for (int i = 0; i < n; i++) ans += Math.Abs(i + 1 - arr[i]); // Return the required answer return ans; } // Driver code public static void Main(string[] args) { int []arr = { 5, 3, 8, 1, 1 }; int n = arr.Length; // Function call Console.WriteLine(make_permutation(arr, n)); } } // This code is contributed by Yash_R
Javascript
<script> // Java Script program to calculate minimum cost // to make an Array a permutation // of first N natural numbers // Function to calculate minimum cost // for making permutation of size N function make_permutation(arr,n) { // sorting the array in ascending order arr.sort(); // To store the required answer let ans = 0; // Traverse the whole array for (let i = 0; i < n; i++) ans += Math.abs(i + 1 - arr[i]); // Return the required answer return ans; } // Driver code let arr = [ 5, 3, 8, 1, 1 ]; let n = arr.length; // Function call document.write(make_permutation(arr, n)); // contributed by sravan kumar </script>
5
Complejidad de tiempo: O(n*log(n))
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por ishayadav181 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA