Se dice que una array cuadrada es una array simétrica si la transpuesta de la array es la misma que la array dada. La array simétrica se puede obtener cambiando fila a columna y columna a fila.
Ejemplos:
Input : 1 2 3 2 1 4 3 4 3 Output : Yes Input : 3 5 8 3 4 7 8 5 3 Output : No
Una solución simple es hacer lo siguiente.
1) Crear transpuesta de array dada.
2) Comprobar si la transposición y las arrays dadas son iguales o no.
Python
# Simple Python code for check a matrix is # symmetric or not. # Fills transpose of mat[N][N] in tr[N][N] def transpose(mat, tr, N): for i in range(N): for j in range(N): tr[i][j] = mat[j][i] # Returns true if mat[N][N] is symmetric, else false def isSymmetric(mat, N): tr = [ [0 for j in range(len(mat[0])) ] for i in range(len(mat)) ] transpose(mat, tr, N) for i in range(N): for j in range(N): if (mat[i][j] != tr[i][j]): return False return True # Driver code mat = [ [ 1, 3, 5 ], [ 3, 2, 4 ], [ 5, 4, 1 ] ] if (isSymmetric(mat, 3)): print "Yes" else: print "No" # This code is contributed by Sachin Bisht
Producción :
Yes
Complejidad temporal: O(N x N)
Espacio auxiliar: O(N x N)
Una solución eficiente para verificar si una array es simétrica o no es comparar los elementos de la array sin crear una transposición. Básicamente necesitamos comparar mat[i][j] con mat[j][i].
Python
# Efficient Python code for check a matrix is # symmetric or not. # Returns true if mat[N][N] is symmetric, else false def isSymmetric(mat, N): for i in range(N): for j in range(N): if (mat[i][j] != mat[j][i]): return False return True # Driver code mat = [ [ 1, 3, 5 ], [ 3, 2, 4 ], [ 5, 4, 1 ] ] if (isSymmetric(mat, 3)): print "Yes" else: print "No" # This code is contributed by Sachin Bisht
Producción:
Yes
Complejidad temporal: O(N x N)
Espacio auxiliar: O(1)
¡ Consulte el artículo completo sobre Programa para verificar si una array es simétrica para obtener más detalles!
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA