数据结构-树状数组

数据结构-树状数组

树状数组是一种类似于前缀和的数据结构,但是前缀和的修改操作是 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;
}
相关推荐
ComputerInBook4 分钟前
C++编程语言:标准库:第39章——本地化(语言环境)( Locales)(Bjarne Stroustrup)
c++·c++语言环境·c++ 本地化设置·c++ locale·c++ facet·语言特征
hefaxiang8 分钟前
分支循环(下)(二)
c语言·开发语言·数据结构
阿正的梦工坊17 分钟前
DreamGym:通过经验合成实现代理学习的可扩展化
人工智能·算法·大模型·llm
小武~27 分钟前
Leetcode 每日一题C 语言版 -- 45 jump game ii
c语言·算法·leetcode
行云流水6261 小时前
前端树形结构实现勾选,半勾选,取消勾选。
前端·算法
繁华似锦respect1 小时前
C++ 智能指针底层实现深度解析
linux·开发语言·c++·设计模式·代理模式
laocooon5238578862 小时前
一个C项目实现框架
c语言·算法
c#上位机3 小时前
halcon图像增强——图像取反
图像处理·算法·c#·halcon
Bona Sun3 小时前
单片机手搓掌上游戏机(二十三)—esp32运行简单街机模拟器软硬件准备
c语言·c++·单片机
zheyutao3 小时前
割点和桥
算法·图论