// home
// start
C++ 在线编译 · 算法图解 · 中文笔记
crazycloud.cc 把浏览器里的 clang 编译、步进算法动画与可运行笔记放在同一套终端界面。
最新算法图解
- 坐标压缩图解:保留顺序,别弄丢长度
用原坐标与压缩秩的双尺动画,看懂端点排序去重、差分事件与区间覆盖长度。压缩保留先后,不保留距离;三格可以代表2、1、5个单位。
- 线段树图解:把区间拆成可合并的节点
用二叉区间树看懂区间最小值查询和单点赋值:完整覆盖就取整块,部分相交就继续拆分;沿叶子到根重新合并;另用非负求和树演示 max_right 的整块接受与失败下钻。
- 树状数组图解:把前缀拆成不重叠的块
沿 lowbit 拆分前缀,沿覆盖关系更新;用区间条看懂树状数组的查询与单点增量,连接静态前缀和与动态区间和。
最新 C++ 笔记
- 递归 DFS 爆栈:一条 10 万个点的链,g++ 下多 5000 个点就段错误
求子树大小的递归 DFS,在 8 MB 栈上 g++ 只能走约 10.4 万层。把递归里藏着的「停在第几条边」搬进一个 vector,深度就只受内存限制。
- 单调栈图解:下一个更大元素,每个下标只进栈一次、出栈一次
暴力找「右边第一个更大的数」在 10 万个递减元素上要比较约 50 亿次,本机约 1.3 秒;单调栈 0.6 毫秒。快的原因不是技巧,是每个元素被确定答案之后就不再看它。
- LeetCode 206 反转链表图解:四行指针的顺序,和递归版在长链上爆栈
迭代版每一步只改一根指针,顺序错一行就丢掉整段链表。递归版更短,但在 8 MB 栈上,g++ -O0 撑到约 17 万个节点就段错误。
在线编译
- 打开 C/C++ Playground
浏览器里用 clang 编译为 WebAssembly,编辑、运行并分享片段,无需本地安装编译器。
- 浏览器里编译 C++:中文导览
从工具链加载到第一次跑通 Hello World,说明本站 Playground 怎么工作。
- scanf 与标准输入
在浏览器编译环境里处理 stdin,适合对照 Playground 的输入面板一起练。