【数据结构与算法】二叉索引树(树状数组,Binary Indexed Tree)

本文介绍了树状数组(二叉索引树),这是一种用于高效维护区间信息和查询的数据结构。在动态连续和查询问题中,它能在O(logn)时间内完成单点值的修改和任意前缀和的计算。相较于使用前缀和数组,当数组元素需要修改时,树状数组避免了全数组重新计算的时间复杂度。文章以LeetCode的两个相关题目为例,说明了树状数组在解决动态数组问题中的优势。
摘要由CSDN通过智能技术生成

最近做题碰壁了,遇到了一些高级的数据结构,以前从来没有见过用过的,决定对他们一一进行探索
对于区间信息的维护和查询,有两个数据结构比较有用,一个是树状数组,一个是线段树,这篇文章先来介绍一下树状数组。

二叉索引树(树状数组)

定义

一个Fenwick树或者说是二叉索引树是一个可以高效地更新数字表中元素和计算前缀和的数据结构。
它可以以O(logn)的时间得到任意前缀和:
∑ i = 1 j A [ i ] , 1 < = j < = N \sum_{i=1}^jA[i],1<=j<=N i=1jA[i],1<=j<=N

并同时支持在 O ( l o g n ) O(logn) O(lo

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值