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 Sí ; 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>
No