数据结构-树状数组

数据结构-树状数组

树状数组是一种类似于前缀和的数据结构,但是前缀和的修改操作是 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;
}
相关推荐
Fanxt_Ja11 分钟前
【LeetCode】算法详解#15 ---环形链表II
数据结构·算法·leetcode·链表
侃侃_天下12 分钟前
最终的信号类
开发语言·c++·算法
茉莉玫瑰花茶23 分钟前
算法 --- 字符串
算法
博笙困了34 分钟前
AcWing学习——差分
c++·算法
NAGNIP37 分钟前
认识 Unsloth 框架:大模型高效微调的利器
算法
NAGNIP37 分钟前
大模型微调框架之LLaMA Factory
算法
echoarts38 分钟前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Python技术极客44 分钟前
一款超好用的 Python 交互式可视化工具,强烈推荐~
算法
徐小夕1 小时前
花了一天时间,开源了一套精美且支持复杂操作的表格编辑器tablejs
前端·算法·github
小刘鸭地下城1 小时前
深入浅出链表:从基础概念到核心操作全面解析
算法