Saturday, 23 Oct 2021

# Minimize sum of numbers required to convert an array into a permutation of first N natural numbers

Minimize sum of numbers required to convert an array into a permutation of first N natural numbersGiven an array A[] of size N, the task is to find the minimum sum of numbers required to be added to array elements to convert the array into a permutation of 1 to N. If the array can not be converted to desired permutation, print -1.Examples:Input: A[] = {1, 1, 1, 1, 1}Output: 10Explanation: Increment A by 1, A by 2, A by 3, A by 4, thus A[] becomes {1, 2, 3, 4, 5}.Minimum additions required = 1 + 2 + 3 + 4 = 10Input: A[] = {2, 2, 3}Output: -1Approach: The idea is to use sorting. Follow these steps to solve this problem:Below is the implementation of the above approach:C++#include using namespace std;int minimumAdditions(int a[], int n){        sort(a, a + n);    int ans = 0;        for (int i = 0; i < n; i++) {                if ((i + 1) - a[i] < 0) {            return -1;        }        if ((i + 1) - a[i] > 0) {                        ans += (i + 1 – a[i]);        }    }        return ans;}int main(){        int A[] = { 1, 1, 1, 1, 1 };    int n = sizeof(A) / sizeof(A);        cout 0):                        ans += (i + 1 – a[i])        return ansif __name__ == ‘__main__’:             A = [ 1, 1, 1, 1, 1 ]    n = len(A)        print(minimumAdditions(A, n))Output: 10Time Complexity: O(N* log(N))Auxiliary Space: O(1)Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.In case you wish to attend live classes with industry experts, please refer Geeks Classes Live