Duplicar posible:
Check if array B is a permutation of A¿Hay dos matrices de permutación entre sí?
dieron 2 matrices de enteros sin clasificar a
y b
de igual tamaño. Determine si b
es una permutación de a
. ¿Se puede hacer esto en O(n) time
y O(1) space
?
La primera solución que me vino a la mente es que está usando XOR
, es decir, XOR all the elements of a and b and if the resultant is 0 which means that b is a permutation of a
. Pero da ejemplos donde este enfoque falla. Para por ejemplo -
a: [1 6 0 0 4] -- b: [1 0 6 1 5]
a: [1 6 0 0 5] -- b: [1 0 6 1 4]
Cualquiera que tenga alguna idea, que la forma de hacerlo en O(n) time
y O(1) space
?
son los enteros en un rango limitado? Uno puede implicar ordenamiento de raíz en el lugar si son – amit
@amit: no ... pero estoy interesado en saber sobre eso también ... amablemente agregue ese caso como una respuesta ... –
@RaviGupta: bueno, no lo sé Solución O (n) pero una solución que es eficiente es verificar primero la longitud de las matrices y, si es la misma, ordenar ambas matrices con cualquier algoritmo O (nlogn). Luego compare los elementos si son iguales, entonces son permutaciones entre sí. Y la complejidad del espacio sería O (1). – ankurtr