Contar sin hacer dos búsquedas hash por elemento, el tamaño exacto de entrada donde Array.Sort deja de preservar el orden, y el heap que C# solo tuvo en .NET 6 — el que la mayoría del código viejo de concursos en C# todavía evita a mano.
Una pila que se niega a guardar cualquier cosa inútil responde “cuál es el siguiente elemento más grande” para todo un arreglo en una sola pasada — y la misma estructura mide el rectángulo más grande de un histograma.
Encontrar un valor en un arreglo ordenado es lo menos útil que hace la búsqueda binaria. El patrón que importa busca en un espacio de respuestas que nadie construyó, y no necesita un arreglo ordenado en absoluto.
Precalcula una vez y responde cada pregunta sobre un rango en tiempo constante — y el truco inverso que casi nadie enseña, que aplica una actualización a todo un rango escribiendo dos celdas.
Los dos punteros se mueven en la misma dirección y la brecha entre ellos es la respuesta. Cuatro formas de ventana, más el truco de conteo que convierte «exactamente K» en una resta, porque «exactamente K» no se puede deslizar directamente.
Cinco patrones que no necesitan nada de memoria extra — dos enteros y el arreglo que te dieron. Dónde aplica cada uno, por qué es lineal, y la única línea del último que todo el mundo escribe al revés.