A continuación un misterioso problema que me pareció muy lindo, porque tiene muchas soluciones con distintas complejidades (tanto espacial como temporal).
El problema: Tenemos número N y un arreglo a que contiene una Permutaciónref1 de los números de 1 a N. Una posición i se dice permutíndice si el subarreglo a[1…i] es permutación de los números de 1 a i.
Calcular cuantas posiciones del arreglo son permutíndices.
Ejemplo: Dada la permutación “1, 2, 3, 4, 5”, todas las posiciones son permutíndices por lo que la respuesta es 5.
Dada la permutación “2,3,1,5,4”; la respuesta es 2, porque a[1…3] es una permutación de los números 1 a 3, y a[1…5] es una permutación de los números de 1 a 5.
En orden creciente de dificultad, resolver el problema con complejidades:
- O(N2) temporal
- O(N) temporal y O(N) espacial
- O(N) temporal y O(1)ref2 espacial
Referencias
-
Una permutación es un arreglo que contiene exactamente los mismos números con el orden cambiado.
Por ejemplo, una permutación de los números de 1 a 5 puede ser “1, 2, 3, 4, 5” ó “5, 2, 4, 1, 3” pero NO “1, 2, 2, 3, 4, 5” porque los números deben aparecer igual cantidad de veces. -
Esta última es díficil. Lucas Bekier fue quien me iluminó con esta solución mágica.