精选文章

📚 精选阅读

  1. LeetCode 307 - 区域和检索 - 数组可修改
    • 难度:中等 树状数组基础题
    • 链接:https://leetcode.cn/problems/range-sum-query-mutable/
  2. LeetCode 315 - 计算右侧小于当前元素的个数
    • 难度:困难 树状数组 + 离散化经典题
    • 链接:https://leetcode.cn/problems/count-of-smaller-numbers-after-self/
  3. LeetCode 493 - 翻转对
    • 难度:困难 逆序对变式
    • 链接:https://leetcode.cn/problems/reverse-pairs/
  4. LeetCode 308 - 二维区域和检索 - 矩阵可变
    • 难度:困难 二维 BIT 模板题
    • 链接:https://leetcode.cn/problems/range-sum-query-2d-mutable/
  5. 《树状数组从入门到理解》
    • 图解 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 困难

面试高频问题

  1. 树状数组和线段树的区别?
  2. 为什么 BIT 只需要 O(n) 空间?
  3. lowbit 的含义是什么?

相关阅读:树状数组(Fenwick Tree)