Convierta una array en otra eliminando repetidamente el último elemento y colocándolo en cualquier índice arbitrario

Dadas dos arrays A[] y B[] , ambas compuestas por una permutación de los primeros N números naturales , la tarea es contar el número mínimo de veces que se requiere que el último elemento de la array se desplace a cualquier posición arbitraria en la array A[ ] para hacer que las arrays A[] y B[] sean iguales.

Ejemplos:

Entrada: A[] = {1, 2, 3, 4, 5}, B[] = {1, 5, 2, 3, 4}
Salida: 1
Explicación:
Inicialmente, la array A[] es {1, 2 , 3, 4, 5}. Después de mover el último elemento del arreglo, es decir, 5, y colocarlos entre arr[0] (= 1) y arr[1](= 2) modifica el arreglo a {1, 5, 2, 3, 4}, que es el igual que la array B[].
Por lo tanto, el número mínimo de operaciones necesarias para convertir la array A[] en B[] es 1.

Entrada: A[] = {3, 2, 1}, B[] = {1, 2, 3}
Salida: 2
Explicación:
Inicialmente, la array A[] es {3, 2, 1}.
Operación 1: después de mover el último elemento de la array, es decir, 1, al comienzo de la array, modifica la array a {1, 3, 2}.
Operación 2: Después de mover el último elemento de la array, es decir, 2 y colocarlos entre los elementos arr[0] (= 1) y arr[1] (= 3) modifica la array a {1, 2, 3}, que es lo mismo que la array B[].
Por lo tanto, el número mínimo de operaciones necesarias para convertir la array A[] en B[] es 2.

Enfoque: El problema dado se puede resolver encontrando los primeros i elementos consecutivos de la primera permutación que es igual a la subsecuencia de la segunda permutación, entonces el conteo de operaciones debe ser menor al menos (N – I ) , ya que la última (N – i) los elementos se pueden seleccionar de manera óptima e insertar en los índices requeridos. Por lo tanto, (N – i) es el número mínimo de pasos requeridos para la conversión de la array A[] a B[] .

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program for the above approach
 
#include <iostream>
using namespace std;
 
// Function to count the minimum number
// of operations required to convert
// the array A[] into array B[]
int minCount(int A[], int B[], int N)
{
    // Stores the index in the first
    // permutation A[] which is same
    // as the subsequence in B[]
    int i = 0;
 
    // Find the first i elements in A[]
    // which is a subsequence in B[]
    for (int j = 0; j < N; j++) {
 
        // If element A[i]
        // is same as B[j]
        if (A[i] == B[j]) {
            i++;
        }
    }
 
    // Return the count of
    // operations required
    return N - i;
}
 
// Driver Code
int main()
{
    int A[] = { 1, 2, 3, 4, 5 };
    int B[] = { 1, 5, 2, 3, 4 };
 
    int N = sizeof(A) / sizeof(A[0]);
 
    cout << minCount(A, B, N);
 
    return 0;
}

Java

// Java program for the above approach
class GFG{
     
// Function to count the minimum number
// of operations required to convert
// the array A[] into array B[]
static int minCount(int A[], int B[], int N)
{
     
    // Stores the index in the first
    // permutation A[] which is same
    // as the subsequence in B[]
    int i = 0;
 
    // Find the first i elements in A[]
    // which is a subsequence in B[]
    for(int j = 0; j < N; j++)
    {
         
        // If element A[i]
        // is same as B[j]
        if (A[i] == B[j])
        {
            i++;
        }
    }
 
    // Return the count of
    // operations required
    return N - i;
}
 
// Driver Code
public static void main (String[] args)
{
    int A[] = { 1, 2, 3, 4, 5 };
    int B[] = { 1, 5, 2, 3, 4 };
    int N = A.length;
 
    System.out.println(minCount(A, B, N));
}
}
 
// This code is contributed by AnkThon

Python3

# Python3 program for the above approach
 
# Function to count the minimum number
# of operations required to convert
# the array A[] into array B[]
def minCount(A, B, N):
     
    # Stores the index in the first
    # permutation A[] which is same
    # as the subsequence in B[]
    i = 0
 
    # Find the first i elements in A[]
    # which is a subsequence in B[]
    for j in range(N):
         
        # If element A[i]
        # is same as B[j]
        if (A[i] == B[j]):
            i += 1
 
    # Return the count of
    # operations required
    return N - i
 
# Driver Code
if __name__ == '__main__':
     
    A = [ 1, 2, 3, 4, 5 ]
    B = [ 1, 5, 2, 3, 4 ]
 
    N = len(A)
 
    print(minCount(A, B, N))
     
# This code is contributed by ipg2016107

C#

// C# program for the above approach
using System;
 
class GFG{
 
// Function to count the minimum number
// of operations required to convert
// the array A[] into array B[]
static int minCount(int[] A, int[] B, int N)
{
     
    // Stores the index in the first
    // permutation A[] which is same
    // as the subsequence in B[]
    int i = 0;
 
    // Find the first i elements in A[]
    // which is a subsequence in B[]
    for(int j = 0; j < N; j++)
    {
         
        // If element A[i]
        // is same as B[j]
        if (A[i] == B[j])
        {
            i++;
        }
    }
 
    // Return the count of
    // operations required
    return N - i;
}
 
// Driver Code
public static void Main(string[] args)
{
    int[] A = { 1, 2, 3, 4, 5 };
    int[] B = { 1, 5, 2, 3, 4 };
    int N = A.Length;
 
    Console.WriteLine(minCount(A, B, N));
}
}
 
// This code is contributed by ukasp

Javascript

<script>
 
// JavaScript program for the above approach
 
// Function to count the minimum number
// of operations required to convert
// the array A[] into array B[]
function minCount(A, B, N){
     
    // Stores the index in the first
    // permutation A[] which is same
    // as the subsequence in B[]
    var i = 0
 
    // Find the first i elements in A[]
    // which is a subsequence in B[]
    for(let j = 0; j < N; j++){
         
        // If element A[i]
        // is same as B[j]
        if (A[i] == B[j])
            i += 1
      }
    // Return the count of
    // operations required
    return N - i
     
}
 
// Driver Code
     
var A = [ 1, 2, 3, 4, 5 ]
var B = [ 1, 5, 2, 3, 4 ]
 
N = A.length
 
document.write(minCount(A, B, N))
     
// This code is contributed by AnkThon
 
</script>
Producción: 

1

 

Complejidad temporal: O(N)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por aditya7409 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *