当前位置: 首页 > news >正文

LeetCode 树状数组应用题解

LeetCode 树状数组应用题解

题目描述

总结树状数组的各种应用场景。

树状数组的应用场景

1. 动态数组前缀和

  • 快速计算数组的前缀和。
  • 快速更新数组中某个位置的值。

2. 逆序数统计

  • 统计数组中的逆序对数量。
  • 利用树状数组存储已经遍历过的元素。

3. 区间和查询

  • 快速计算数组某个区间的元素和。
  • 支持区间更新。

4. 离散化

  • 将大范围数据映射到小范围索引。
  • 配合树状数组处理。

5. 动态排名

  • 动态维护元素的排名。
  • 快速查询第 k 小的元素。

代码实现

class FenwickTree: def __init__(self, n): self.n = n self.tree = [0] * (n + 1) def update(self, i, delta): while i <= self.n: self.tree[i] += delta i += i & (-i) def query(self, i): result = 0 while i > 0: result += self.tree[i] i -= i & (-i) return result # 测试 def test_fenwick_tree(): ft = FenwickTree(5) ft.update(1, 1) ft.update(2, 2) print(ft.query(3)) # 输出:3 if __name__ == "__main__": test_fenwick_tree()

总结

树状数组是一种高效的数据结构,可以应用于多种场景,包括前缀和查询、逆序数统计、区间和查询等。

http://www.jsqmd.com/news/816487/

相关文章:

  • ARM系统寄存器ERXADDR解析与错误处理机制
  • BetterNCM安装器:让网易云音乐体验升级的智能管家
  • 城市移动机器人定位:单目视觉+低等级IMU+车轮里程计融合方案
  • 十六年技术沉淀,西恩士为何能成为 AI 液冷检测领域的破局者? - 工业干货社
  • 平移门电机厂家怎么选?专业选购指南帮你避坑 - 资讯速览
  • 杭州宝珀腕表抛光注意什么事项?五十噚/6654表壳划痕修复,别让“翻新”变“毁容”! - 亨得利官方维修中心
  • 展厅展览工程口碑好服务商
  • 如何构建个人B站视频库:BilibiliDown完整解决方案
  • 江苏定做柔性大门厂家哪个质量好 - 资讯速览
  • 崩坏星穹铁道模拟宇宙自动化终极指南:轻松解放双手刷取资源
  • 告别激活烦恼:手把手教你用vlmcsd在Windows Server上搭建自己的KMS服务器(含完整密钥表)
  • hermes agent工具如何对接taotoken多模型聚合平台
  • 要帮助孩子管理情绪
  • 选择Token Plan套餐在长期项目中带来的成本可控感受
  • 实测对比使用Taotoken聚合API在多模型间的响应延迟体验
  • 使用Python快速接入Taotoken聚合大模型API并生成视频脚本片段
  • C# 实时查看硬件使用率(CPU / 内存 / 硬盘 / 网络)
  • 网站推广软文平台:2026新媒体营销平台权威测评 - 博客湾
  • 三步永久保存微信聊天记录:无需越狱的完整导出方案
  • 保姆级教程:在OptiSystem中搭建7通道WDM系统(含EDFA放大与色散补偿配置)
  • 中介房源管理系统使用体验评测
  • Java还是大模型?小白程序员必看:收藏这份方向选择指南,抓住未来红利!
  • 上海凤金实业:松江电梯拆除找哪家 - LYL仔仔
  • socket相关的部分常用函数总结
  • [K8S小白问题集] - APIServer接受到的API调用都是什么样的?与http请求的API差别很大吗?
  • 2026年嘉兴黄金回收哪家强?靠谱机构推荐 - 生活测评君
  • 长期项目使用中观察到的Taotoken账单明细与成本分析报告
  • 保姆级教程:零基础用BeagleBone Black搭建你的第一个物联网网关(含Node-RED配置)
  • STM32CubeMX与IDE拆分:性能、灵活性与现代开发流程的革新
  • 拆解SMT产线‘火眼金睛’:AOI与X-Ray检测机,如何帮我们揪出BGA虚焊和QFN不良?