Estas son las estructuras de datos que uso a menudo. Agregaría más a medida que los recuerde. El número entre paréntesis delante de cualquier estructura de datos es proporcional a la frecuencia con que los uso.
Estructuras de datos básicos :
- Pilas (5)
- Colas (5)
Estructuras de datos intermedios:
- ¿Cuál es el algoritmo Google + 1 utilizado para Sparks?
- ¿Qué lenguaje, libro o técnica es el mejor punto de partida cuando estás frustrado con tus habilidades de programación y quieres tener una sólida formación en algoritmos y estructuras de datos?
- ¿Cuál es la forma más eficiente de encontrar el número total de nodos en un sistema distribuido?
- ¿Los números en pi imitan una distribución aleatoria? Si es así, ¿cómo es esto compatible con el uso de algoritmos para generar los números?
- ¿Cuáles son algunos de los códigos más pequeños que generan un número pseudoaleatorio?
- Mapas de hash (5)
- Conjuntos ordenados (3)
- Juegos de hash (5)
- Árbol de búsqueda binaria (desequilibrado) (2)
- Intentos (3)
- Montones (3)
- Filtros de floración (0)
Estructuras de datos ligeramente avanzadas:
- Árbol indexado binario (2)
- Árbol de Segmentos (3)
- Árbol de búsqueda binaria (equilibrado) (3)
- Estructura de datos de conjunto disjunto (2)
- Hash de secuencia [1] (2)
- Matriz de sufijo (1)
- Estructura de datos de consulta mínima de rango (1)
- Cola mínima / Cola máxima [2] (1)
Estructuras de datos avanzadas:
- Árbol de corte de enlace (0)
- Árbol de sufijo (0)
1. Es una estructura de datos no estándar que llamo Sequence Hash, otras personas pueden tener diferentes nombres para ello. Dada una secuencia de longitud L (la secuencia puede ser una cadena o una matriz o cualquier otro tipo de secuencia), realiza el preproceso O (L) y luego devuelve un hash polinomial para cualquier subsecuencia consecutiva en O (1). Muy útil para la coincidencia de cadenas. Puede encontrar mi implementación de C ++ aquí: http://pastebin.com/jzTyUZmR
2. La cola mínima (máxima) es una modificación menos conocida de la cola ordinaria. Es compatible con las siguientes operaciones:
- Empuje hacia atrás O (1)
- Pop Front O (1)
- Valor máximo (mínimo) entre elementos actualmente en la cola O (1)
Puede encontrar mi implementación de C ++ para MinMaxQ con plantilla aquí: http://pastebin.com/xqg53N52