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

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 6
Input : 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
// 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
// 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
# 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#
// 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 |
Javascript
<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> |
Output:
7
Time Complexity: O(n*log(n))
Auxiliary Space: O(1)
Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



