数据结构-树状数组

数据结构-树状数组

树状数组是一种类似于前缀和的数据结构,但是前缀和的修改操作是 O(n)的,查询是 O(1) 的 。所以就有了树状数组这个数据结构,它的两种操作被中和了,都是 O(logn) 的。

C++ 复制代码
int nums[N];
//算出最后一位1的位置
int lowbit (int x) 
{    
    return x & -x;
}
//查询前缀和,时间复杂度O(logn)
int ask(int x)
{
    int res=0;
    for(;x;x-=lowbit(x)) res+=nums[x];
    return res;
}
//单点修改,时间复杂度O(logn)
int add(int x,int y)//nums[x]+y
{
    for(;x<=n;x+=lowbit(x)) nums[x]+=y;
}
相关推荐
Mem0rin13 小时前
[Java/数据结构]线性表之链表
java·数据结构·链表
kyle~13 小时前
ROS2 --- WaitSet(等待集) 等待实体就绪,管理执行回调函数
大数据·c++·机器人·ros2
人大博士的交易之路13 小时前
数据结构算法——python数据结构
开发语言·数据结构·python
量子炒饭大师14 小时前
【C++进阶】Cyber骇客的赛博血统上传——【面向对象之 继承 】一文带你搞懂面向对象编程的三要素之————继承
c++·dubbo·继承·面向对象编程
Tanecious.14 小时前
蓝桥杯备赛:Day2-B3612 求区间和
c++·蓝桥杯
C+++Python14 小时前
Linux/C++多进程
linux·运维·c++
stolentime14 小时前
通信题:洛谷P15942 [JOI Final 2026] 赌场 / Casino题解
c++·算法·洛谷·joi·通信题
XZHOUMIN14 小时前
【生成pdf格式的报告】
c++·pdf·mfc
初生牛犊不怕苦14 小时前
与AI一起学习《C专家编程》:数组与指针
c语言·学习·算法
elseif12314 小时前
浅谈 C++ 学习
开发语言·c++·学习