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> |
7
Time Complexity: O(n*log(n))
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
