📚 精选阅读
- LeetCode 307 - 区域和检索 - 数组可修改
-
难度:中等 树状数组基础题 - 链接:https://leetcode.cn/problems/range-sum-query-mutable/
-
- LeetCode 315 - 计算右侧小于当前元素的个数
-
难度:困难 树状数组 + 离散化经典题 - 链接:https://leetcode.cn/problems/count-of-smaller-numbers-after-self/
-
- LeetCode 493 - 翻转对
-
难度:困难 逆序对变式 - 链接:https://leetcode.cn/problems/reverse-pairs/
-
- LeetCode 308 - 二维区域和检索 - 矩阵可变
-
难度:困难 二维 BIT 模板题 - 链接:https://leetcode.cn/problems/range-sum-query-2d-mutable/
-
- 《树状数组从入门到理解》
- 图解 BIT 原理,清晰易懂
- 推荐:B站正月点灯哥哥
🔧 实战路径
第一阶段:基础操作
├─ LeetCode 307:单点更新 + 区间求和
└─ 理解 lowbit 原理
第二阶段:离散化技巧
├─ LeetCode 315:统计右侧小于元素
└─ 掌握离散化 + BIT 的组合
第三阶段:变式扩展
├─ LeetCode 493:翻转对(乘2变形)
└─ 二维 BIT(LeetCode 308)
📖 推荐学习顺序
1. 理解 lowbit → 二进制分解的本质
2. 画图模拟 add 和 sum 操作
3. LeetCode 307 → 实现基本 BIT
4. LeetCode 315 → 进阶:离散化技巧
5. 理解为什么离散化是必要的
💡 面试常考点
| 考点 | 对应题目 | 难度 |
|---|---|---|
| BIT 基础 | 307 | 中等 |
| 离散化 | 315、493 | 困难 |
| 二维 BIT | 308 | 困难 |
| 逆序对变形 | 493 | 困难 |
面试高频问题:
- 树状数组和线段树的区别?
- 为什么 BIT 只需要 O(n) 空间?
- lowbit 的含义是什么?
相关阅读:树状数组(Fenwick Tree)