VOOZH about

URL: https://www.geeksforgeeks.org/dsa/minimum-cost-required-to-rearrange-a-given-array-to-make-it-equal-to-another-given-array/

⇱ Minimum cost required to rearrange a given array to make it equal to another given array - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Minimum cost required to rearrange a given array to make it equal to another given array

Last Updated : 23 Jul, 2025

Given two arrays A[] and B[] consisting of M and N integers respectively, and an integer C, the task is to find the minimum cost required to make the sequence A exactly the same as B(consists of distinct elements only) by performing the following operations on array A[]:

  • Remove any element from the array with cost 0.
  • Insert a new element anywhere in the array with cost C.

Examples:

Input: A[] = {1, 6, 3, 5, 10}, B[] = {3, 1, 5}, C = 2
Output: 2
Explanation:
Removing elements 1, 6, and 10 from the array costs 0. The array A[] becomes {3, 5}.
Add 1 in between 3 and 5, then the array arr[] becomes {3, 1, 5} which is the same as the array B[].
The cost of above operation is 2.

Input: A[] = {10, 5, 2, 4, 10, 5}, B[] = {5, 1, 2, 10, 4}, C = 3
Output: 6
Explanation:
Removing elements 10, 10, and 5 from the array costs 0. The array A[] becomes {5, 2, 4}.
Add element 1 and 10 in the array as {5, 1, 2, 10, 4} which is the same as the array B[].
The cost of above operation is 3*2 = 6.

Naive Approach: The simplest approach is to erase all the elements from array A[] which are not present in array B[] by using two for loops. After that generate all permutations of the remaining element in the array and for each sequence check for the minimum cost such that the array A[] is the same as the array B[]. Print the minimum cost of the same.

Time Complexity: O(N!*N*M), where N is the size of the array A[] and M is the size of the array B[].
Auxiliary Space: O(1)

Efficient Approach: To optimize the above approach, the idea is to first find the length of the longest common subsequence of array A[] and B[] and subtract it from the size of array B[], which gives the number of elements to be added in array A[]. And add amount C into the cost for every new element added. Therefore, the total cost is given by:

Cost = C*(N - LCS(A, B))
where, 
LCS is the longest common subsequence of the arrays A[] and B[], 
N is the length of the array A[], and
C is the cost of adding each element in the array B[].

Follow the steps below to solve the problem:

  • Create a new array say index[] and initialize it with -1 and an array nums[].
  • Map each element of the array B[] to its corresponding index in the array index[].
  • Traverse the given array A[] and insert the values with its mapped values i.e., index number into the array nums[] array and if the index number is not -1.
  • Now find the Longest Increasing Subsequence of the array nums[] to obtain the length of the longest common subsequence of the two given arrays.
  • After finding the LCS in the above steps, find the value of cost using the formula discussed above.

Below is the implementation of the above approach:


Output: 
2

 

Time Complexity: O(N * Log N)
Auxiliary Space: O(N)

Comment