Kacam.net

Ver el mundo

Algoritmos: una técnica cada vez

No «ordenación» ni «programación dinámica», sino «el límite en la búsqueda binaria», «definir el estado en PD», «este duplicado ¿es del mismo nivel o de la misma rama?»: cada ficha ahonda en un solo punto, hasta que sepas decir por qué.

Por ahora estas indicaciones solo existen en 简体中文.

Cómo se usa

Esta serie enseña en vez de interrogar: te guía en lugar de apretar hasta que no te quede nada que decir. Cuando te atascas pregunta primero en qué capa (no lo he oído nunca / lo sé pero no sé por qué / sé por qué pero no me sale) y luego decide qué darte. Solo después de guiarte dos veces en el mismo punto te lo dice, y entonces te pide que lo repitas con tus palabras.

Cómo empezar

  1. Elige una, ábrela y copia el prompt.
  2. Pégalo en una conversación nueva y vacía, no digas nada y espera su primera pregunta.
  3. Traza a mano antes de escribir código: te interrumpirá. Recorrer un array de longitud 2 vale más que escribir la plantilla diez veces.

Cuatro órdenes que puedes soltar en cualquier momento

  • 跳过 pasar ya a la siguiente escena
  • 换个说法 explicar esta parte desde otro ángulo
  • 直说吧 dar la respuesta completa y luego hacérmela repetir
  • 复盘 saltar al cierre y sacar la ficha de balance

Tres trampas

  • No leas antes el solucionario del final: ese apartado de «errores de razonamiento habituales» es la respuesta a cada una de las preguntas.
  • No corras a escribir código. En algoritmos, escribir código es la mejor forma de tapar que en realidad no lo has pensado.
  • Cuando empiece a elogiarte, remítelo a la regla «no me elogies». Guiar no es consentir.

¿No se te ocurre la solución? Empieza por la definición del estado. ¿Siempre fallas en los límites? Búsqueda binaria y sumas de prefijos. ¿No reconoces la forma del problema? Pila monótona y ventana deslizante. La de complejidad sostiene a varias otras: hazla pronto.

Fundamentos

二分的边界
会写,但老是错边界 —— 因为你没说清自己维护的是哪个不变量。
★★★☆☆ · unos 35 min
滑动窗口什么时候不能滑
数组里有负数,你那个滑动窗口就错了 —— 说得出为什么吗?
★★★☆☆ · unos 35 min
同样是 O(n log n),为什么快排更快
快排和堆排都是 O(n log n),实测差两三倍。差在哪?
★★★★☆ · unos 40 min

Estructuras de datos

单调栈:什么形状的题会塌成它
模板八行,难的是看见一道新题认出它是这个形状。
★★★☆☆ · unos 35 min
求第 k 大,为什么用小顶堆
求最大的 100 个,用小顶堆 —— 方向是反的,为什么?
★★★☆☆ · unos 30 min
并查集:两个优化各省了什么
十行代码,但去掉按秩合并会退化成什么,你说得出吗?
★★★☆☆ · unos 30 min
前缀和能用的前提是可逆
区间和能用它,区间最大值不能 —— 那条界线在哪?
★★★☆☆ · unos 30 min

Paradigmas

动态规划:状态定义才是那道坎
「看得懂题解、自己想不出来」,卡的几乎都是这一步。
★★★★☆ · unos 45 min
贪心:过了样例不等于对
唯一一类跑过样例仍然可能彻底错的算法。
★★★★☆ · unos 35 min
回溯去重:同层还是同枝
去重条件里那个感叹号,为什么在那儿?
★★★★☆ · unos 35 min
Estos prompts son de código abierto El texto se mantiene en el repositorio público kacam-net/hero-prompts. Si alguno no aprieta lo suficiente, o a su solución le falta una línea, ve y cámbialo: que se publique aquí es otra decisión, y la toma el catálogo de este lado.