第 162 课
枚举区间
🟢 入门 约 5 分钟
一句话理解
枚举区间:枚举左端点、右端点。
为什么要学
区间题的暴力是 O(n²) 个子区间。
讲解
for l for r>=l 处理 a[l..r]。每个区间再求和若 O(n),就变成 O(n³),通常要前缀和降到 O(n²)。
这是前缀和、双指针的起点。
例子
for (int l = 1; l <= n; l++)
for (int r = l; r <= n; r++)
use(l, r);
所有连续子数组。
常见错误
- 每个区间 O(n) 求和变成 n³。
- r 从 1 开始而不是从 l。
练习 做完再看下一课
长度为 n 的数组,连续子区间个数?
每个 l<=r 一对。
在线练习 C++ 在浏览器里编译,代码不会上传 已通过
Ctrl / ⌘ + Enter 运行 · Tab 缩进
隐藏测试点只是界面不展示数据。题目 JSON 会下发到浏览器,可在开发者工具里看到,只适合自学,不是正式比赛评测。
进度保存在本机浏览器里。
左右方向键也可翻课