Minimum steps to convert an Array into permutation of numbers from 1 to N

28 Jun, 2022
Given an array arr of length N, the task is to count the minimum number of operations to convert given sequence into a permutation of first N natural numbers (1, 2, ...., N). In each operation, increment or decrement an element by one.Examples:  
Input: arr[] = {4, 1, 3, 6, 5} Output: 4 Apply decrement operation four times on 6Input : arr[] = {0, 2, 3, 4, 1, 6, 8, 9} Output : 7  
 
Approach: An efficient approach is to sort the given array and for each element, find the difference between the arr[i] and i(1 based indexing). Find the sum of all such difference, and this will be the minimum steps required.Below is the implementation of the above approach: 
CPP
Java
Python3
C#
Javascript
// C++ program to find minimum number of steps to// convert a given sequence into a permutation #include <bits/stdc++.h>using namespace std; // Function to find minimum number of steps to// convert a given sequence into a permutationint get_permutation(int arr[], int n){    // Sort the given array    sort(arr, arr + n);     // To store the required minimum    // number of operations    int result = 0;     // Find the operations on each step    for (int i = 0; i < n; i++) {        result += abs(arr[i] - (i + 1));    }     // Return the answer    return result;} // Driver codeint main(){    int arr[] = { 0, 2, 3, 4, 1, 6, 8, 9 };     int n = sizeof(arr) / sizeof(arr[0]);     // Function call    cout << get_permutation(arr, n);     return 0;}
// Java program to find minimum number of steps to// convert a given sequence into a permutationimport java.util.*; class GFG{  // Function to find minimum number of steps to// convert a given sequence into a permutationstatic int get_permutation(int arr[], int n){    // Sort the given array    Arrays.sort(arr);      // To store the required minimum    // number of operations    int result = 0;      // Find the operations on each step    for (int i = 0; i < n; i++) {        result += Math.abs(arr[i] - (i + 1));    }      // Return the answer    return result;}  // Driver codepublic static void main(String[] args){    int arr[] = { 0, 2, 3, 4, 1, 6, 8, 9 };      int n = arr.length;      // Function call    System.out.print(get_permutation(arr, n));  }} // This code is contributed by 29AjayKumar
# Python3 program to find minimum number of steps to# convert a given sequence into a permutation # Function to find minimum number of steps to# convert a given sequence into a permutationdef get_permutation(arr, n):     # Sort the given array    arr = sorted(arr)     # To store the required minimum    # number of operations    result = 0     # Find the operations on each step    for i in range(n):        result += abs(arr[i] - (i + 1))     # Return the answer    return result # Driver codeif __name__ == '__main__':    arr=[0, 2, 3, 4, 1, 6, 8, 9]    n = len(arr)     # Function call    print(get_permutation(arr, n)) # This code is contributed by mohit kumar 29   
// C# program to find minimum number of steps to// convert a given sequence into a permutationusing System;  class GFG{ // Function to find minimum number of steps to// convert a given sequence into a permutationstatic int get_permutation(int []arr, int n){    // Sort the given array    Array.Sort(arr);     // To store the required minimum    // number of operations    int result = 0;     // Find the operations on each step    for (int i = 0; i < n; i++) {        result += Math.Abs(arr[i] - (i + 1));    }     // Return the answer    return result;} // Driver Codepublic static void Main(){    int []arr = { 0, 2, 3, 4, 1, 6, 8, 9 };     int n = arr.Length;     // Function call    Console.Write(get_permutation(arr, n));}} // This code is contributed by shivanisinghss2110
<script>// javascript program to find minimum number of steps to// convert a given sequence into a permutation // Function to find minimum number of steps to// convert a given sequence into a permutationfunction get_permutation(arr , n){     // Sort the given array    arr.sort();      // To store the required minimum    // number of operations    var result = 0;      // Find the operations on each step    for (i = 0; i < n; i++) {        result += Math.abs(arr[i] - (i + 1));    }      // Return the answer    return result;}  // Driver codevar arr = [ 0, 2, 3, 4, 1, 6, 8, 9 ];var n = arr.length;  // Function calldocument.write(get_permutation(arr, n)); // This code is contributed by Amit Katiyar</script>
7
 
Time Complexity: O(n*log(n))Auxiliary Space: O(1)
mohit kumar 29
29AjayKumar
shivanisinghss2110
amit143katiyar
pushpeshrajdx01
Natural Numbers
permutation
Arrays
Sorting
Arrays
Sorting
permutation
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.