No podría pensar en soluciones eficientes si no está familiarizado con las estructuras de datos y los algoritmos. Te daré un ejemplo.
Considere que le dan una matriz X y un objetivo ‘t’. Necesita encontrar una solución para el problema X [i] + X [j] = t con la restricción i <j. Lo primero que viene a la mente es que puede atravesar toda la matriz correspondiente a cada elemento, y si la suma coincide con el objetivo, imprime el resultado. El pseudocódigo es el siguiente:
para (int i = 0; i <X.length; i ++)
{
para (int j = i + 1; j <X.length; j ++)
{
si (X [i] + X [j] == t)
{
imprime el valor de ‘i’ y ‘j’;
descanso;
}
}
}
- ¿Hay alguna plataforma o sitio web donde pueda encontrar y explorar todas las bibliotecas de JavaScript y jQuery?
- A partir del tercer trimestre de 2014, ¿cuáles son todos los pros y los contras entre Play (Scala) y meteor.js (node.js / JavaScript) para crear aplicaciones web?
- ¿Qué funciones de matriz de JavaScript utiliza con frecuencia?
- ¿Qué script de encuesta es el mejor para mi situación?
- ¿En qué se diferencia jQuery de JavaScript?
Esta solución se ejecutaría en O (n ^ 2).
Ahora considere la siguiente solución: agrega todos los elementos en HashSet (una estructura de datos), luego revisa cada clave y verifica si (t-key) está presente en el HashSet. Si es así, puede atravesar la matriz y encontrar las posiciones de ambos números. El pseudocódigo es el siguiente:
Lista HashSet;
para (int i = 0; i <X.length; i ++)
{
list.add (X [i]);
}
para cada clave en la lista
{
num1 = clave;
if (list.contains (clave de destino))
{
descanso;
}
}
atraviesa X y encuentra la posición de ambos números. Este algoritmo resolvería el problema dado en O (n), que es una gran mejora sobre la solución ingenua. ¡Lo que estoy tratando de hacer aquí es que si no conocieras las estructuras de datos y los algoritmos, ni siquiera podrías realizar un análisis asintótico de tu solución …!
Además, si no estuviera familiarizado con las estructuras de datos, no podría pensar que este problema podría resolverse en menos tiempo, por supuesto, con un poco de espacio de memoria adicional. Por lo tanto, diría que las estructuras de datos y los algoritmos son una necesidad, sin importar en qué idioma desee codificar.