Compruebe si la array dada es inversa al espejo

Dado un arreglo arr[] , la tarea es encontrar si el arreglo es espejo inverso. Inversa de una array significa que si los elementos de la array se intercambian con sus índices correspondientes y la array se llama espejo-inversa si su inversa es igual a sí misma. Si la array es inversa al espejo, imprima ; de lo contrario, imprima No.
Ejemplos: 
 

Entrada: arr[] = [3, 4, 2, 0, 1} 
Salida: Sí 
En la array dada: 
índice(0) -> valor(3) 
índice(1) -> valor(4) 
índice(2) – > valor(2) 
índice(3) -> valor(0) 
índice(4) -> valor(1) 
Para encontrar el inverso de la array, intercambie el índice y el valor de la array. 
índice(3) -> valor(0) 
índice(4) -> valor(1) 
índice(2) -> valor(2) 
índice(0) -> valor(3) 
índice(1) -> valor(4)
Arreglo inverso[] = {3, 4, 2, 0, 1} 
Entonces, el arreglo inverso es igual al arreglo dado.
Entrada: arr[] = {1, 2, 3, 0} 
Salida: No 
 

Un enfoque simple es crear una nueva array intercambiando el valor y el índice de la array dada y verificar si la nueva array es igual a la array original o no.
Un mejor enfoque es atravesar la array y para todos los índices, si arr[arr[index]] = index se cumple, entonces la array dada es inversa al espejo.
A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ implementation of the approach
#include<bits/stdc++.h>
using namespace std;
 
// Function that returns true if
// the array is mirror-inverse
bool isMirrorInverse(int arr[], int n)
{
    for (int i = 0; i < n; i++)
    {
 
        // If condition fails for any element
        if (arr[arr[i]] != i)
            return false;
    }
 
    // Given array is mirror-inverse
    return true;
}
 
// Driver code
int main()
{
        int arr[] = { 1, 2, 3, 0 };
        int n = sizeof(arr)/sizeof(arr[0]);
        if (isMirrorInverse(arr,n))
            cout << "Yes";
        else
            cout << "No";
        return 0;
}
 
// This code is contributed by Rajput-Ji

Java

// Java implementation of the approach
public class GFG {
 
    // Function that returns true if
    // the array is mirror-inverse
    static boolean isMirrorInverse(int arr[])
    {
        for (int i = 0; i < arr.length; i++) {
 
            // If condition fails for any element
            if (arr[arr[i]] != i)
                return false;
        }
 
        // Given array is mirror-inverse
        return true;
    }
 
    // Driver code
    public static void main(String[] args)
    {
        int arr[] = { 1, 2, 3, 0 };
        if (isMirrorInverse(arr))
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}

Python3

# Python 3 implementation of the approach
 
# Function that returns true if
# the array is mirror-inverse
def isMirrorInverse(arr, n) :
 
    for i in range(n) :
 
        # If condition fails for any element
        if (arr[arr[i]] != i) :
            return False;
     
    # Given array is mirror-inverse
    return true;
 
# Driver code
if __name__ == "__main__" :
     
    arr = [ 1, 2, 3, 0 ];
     
    n = len(arr) ;
    if (isMirrorInverse(arr,n)) :
        print("Yes");
    else :
        print("No");
 
# This code is contributed by Ryuga

C#

// C# implementation of the approach
using System;
 
class GFG
{
     
    // Function that returns true if
    // the array is mirror-inverse
    static bool isMirrorInverse(int []arr)
    {
        for (int i = 0; i < arr.Length; i++)
        {
 
            // If condition fails for any element
            if (arr[arr[i]] != i)
                return false;
        }
 
        // Given array is mirror-inverse
        return true;
    }
 
    // Driver code
    static public void Main ()
    {
        int []arr = { 1, 2, 3, 0 };
        if (isMirrorInverse(arr))
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}
 
// This code is contributed by ajit...

PHP

<?php
// PHP implementation of the approach
 
// Function that returns true if
// the array is mirror-inverse
function isMirrorInverse($arr)
{
    for ($i = 0; $i < sizeof($arr); $i++)
    {
 
        // If condition fails for any element
        if ($arr[$arr[$i]] != $i)
            return false;
    }
 
    // Given array is mirror-inverse
    return true;
}
 
// Driver code
$arr = array(1, 2, 3, 0);
if (isMirrorInverse($arr))
    echo("Yes");
else
    echo("No");
 
// These code is contributed by Code_Mech.
?>

Javascript

<script>
 
// JavaScript implementation of the approach
 
 
    // Function that returns true if
    // the array is mirror-inverse
    function isMirrorInverse(arr) {
        for (i = 0; i < arr.length; i++) {
 
            // If condition fails for any element
            if (arr[arr[i]] != i)
                return false;
        }
 
        // Given array is mirror-inverse
        return true;
    }
 
    // Driver code
     
        var arr = [ 1, 2, 3, 0 ];
        if (isMirrorInverse(arr))
            document.write("Yes");
        else
            document.write("No");
 
// This code contributed by Rajput-Ji
 
</script>
Producción: 

No

 

Publicación traducida automáticamente

Artículo escrito por dekay 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 *