数据结构-树状数组

数据结构-树状数组

树状数组是一种类似于前缀和的数据结构,但是前缀和的修改操作是 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;
}
相关推荐
贾斯汀玛尔斯1 天前
每天学一个算法-快速排序(Quick Sort)
数据结构·算法
炽烈小老头1 天前
【每天学习一点算法 2026/04/16】逆波兰表达式求值
学习·算法
优家数科1 天前
水质监测不准?解密云端 TDS 数据建模纠偏算法
算法
木井巳1 天前
【递归算法】组合总和
java·算法·leetcode·决策树·深度优先·剪枝
coding者在努力1 天前
被n整除的n位数
c++·算法
赵药师1 天前
Win11下的VS2022 配置RGBD435i 相机
c++·vs2022·windows11·rgbd435i
量子炒饭大师1 天前
【C++ 进阶】Cyber霓虹掩体下的代码拟态——【面向对象编程 之 多态】一文带你搞懂C++面向对象编程中的三要素之一————多态!
开发语言·c++·多态
黎阳之光1 天前
去标签化无感定位技术突破,黎阳之光重构空间定位技术路径
大数据·人工智能·算法·安全·数字孪生
伴我与影1 天前
【记录】复现论文 Dftpav
c++·docker
见叶之秋1 天前
【数据结构】详解二叉树和堆
数据结构·算法